繁体   English   中英

关于java Scanner的一些问题

[英]some questions about java Scanner

在此处输入图片说明}

为什么第6行的代码和第8行的效果一样? 这个while循环的起点没有区别吗?

此外,您应该按照以下提示正确使用Scanner

将任何nextXXX方法与来自Scanner类的nextLine混合用于用户输入,不会再次要求您输入,而是导致nextLine读取空行。

为了防止这种情况,在读取用户输入时,始终只使用nextLine 如果您需要int ,请执行int value = Integer.parseInt(scanner.nextLine());

而不是使用nextInt

假设如下:

Scanner sc = new Scanner(System.in);

System.out.println("Enter your age:");
int age = sc.nextInt();
System.out.println("Enter your name:");
String name = sc.nextLine();

System.out.println("Hello " + name + ", you are " + age + " years old");

执行此代码时,系统会要求您输入年龄,假设您输入20 但是,代码不会要求您实际输入名称,输出将是:

Hello , you are 20 years old.

原因是当你按下回车键时,你的实际输入是

20\n

而不仅仅是20 nextInt的调用现在将消耗20并将换行符\\n留在System.in的内部输入缓冲区中。 nextLine的调用现在不会导致新的输入,因为System.in仍有未读的输入。 所以它会读取\\n ,导致一个空的输入。

因此,每个用户输入不仅是一个数字,而且是整行 因此,即使只阅读一个年龄,也使用nextLine()更有意义。 按预期工作的更正代码是:

Scanner sc = new Scanner(System.in);

System.out.println("Enter your age:");
// Now nextLine, not nextInt anymore
int age = Integer.parseInt(sc.nextLine());
System.out.println("Enter your name:");
String name = sc.nextLine();

System.out.println("Hello " + name + ", you are " + age + " years old");

nextXXX方法(例如nextInt在从单行读取多输入时很有用。 例如,当您在一行中输入20 John时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM