栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用扫描仪获取用户输入

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用扫描仪获取用户输入

这是因为您正在使用

Scanner#next
方法。并且,如果您查看该方法的文档,它将返回下一个读取的令牌。

因此,当您使用

next
方法读取用户输入时,它不会
newline
在末尾读取。然后由循环
nextLine()
内部读取
while
。因此,您所
firstName
包含的内容是
newline
您不知道的。

因此,您应

nextLine()
在一段时间内使用而不是
next()

nextInt
方法也是如此。它还不读取换行符。因此,您可以
read
使用
readLine
并将其转换为
int
using
Integer.parseInt
NumberFormatException
如果输入值无法转换为,则会抛出该异常
int
。因此,您需要相应地处理它。

您可以尝试以下代码:-

Scanner sc = new Scanner(System.in);System.out.println("Continue?[Y/N]");while (sc.hasNext() && (sc.nextLine().equalsIgnoreCase("y"))) {//change here    System.out.println("Enter first name");    String name = sc.nextLine();    System.out.println("Enter surname");    String surname = sc.nextLine();    System.out.println("Enter number");    int number = 0;    try {        number = Integer.parseInt(sc.nextLine());    } catch (IllegalArgumentException e) {        e.printStackTrace();    }    System.out.println("Continue?[Y/N]");}

但是,请注意一件事,如果您输入的值无法传递给

Integer.parseInt
您,则会出现异常,并且该输入将被跳过。在这种情况下,您需要使用
while
循环来处理它。

或者,如果您不想执行该异常处理 :-

您可以添加一个

empty sc.nextLine()
after
sc.nextInt()
,它会消耗掉
newline
剩余的东西,如下所示:-

    // Left over part of your while loop    String surname = sc.nextLine();    System.out.println("Enter number");    int number = sc.nextInt();    sc.nextLine(); // To consume the left over newline;    System.out.println("Continue?[Y/N]");


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/486234.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号