使用扫描仪获取用户输入

使用扫描仪获取用户输入,第1张

使用扫描仪获取用户输入

这是因为您正在使用

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]");


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5478378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存