Java Scanner不会等待用户输入

时间:2014-05-03 22:34:09

标签: java io java.util.scanner

我正在使用Java的扫描仪来读取用户输入。如果我只使用一次nextLine,它可以正常工作。使用两个nextLine,第一个不会等待用户输入字符串(第二个)。

输出:

  

X:Y :(等待输入)

我的代码

System.out.print("X: ");
x = scanner.nextLine();
System.out.print("Y: ");
y = scanner.nextLine();

任何想法为什么会发生这种情况?感谢

1 个答案:

答案 0 :(得分:25)

您之前可能正在调用类似nextInt()的方法。因此这样的程序:

Scanner scanner = new Scanner(System.in);
int pos = scanner.nextInt();
System.out.print("X: ");
String x = scanner.nextLine();
System.out.print("Y: ");
String y = scanner.nextLine();

展示你所看到的行为。

问题是nextInt()不会消耗'\n',因此下一次调用nextLine()会消耗它,然后等待阅读y的输入。< / p>

在调用'\n'之前,您需要使用nextLine()

System.out.print("X: ");
scanner.nextLine(); //throw away the \n not consumed by nextInt()
x = scanner.nextLine();
System.out.print("Y: ");
y = scanner.nextLine();

(实际上更好的方法是在nextLine()之后直接调用nextInt()