[英]some questions about java Scanner
此外,您应该按照以下提示正确使用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.