Java Scanner 不等待用户输入

2022-09-01 09:19:44

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

输出:

X: Y: (等待输入)

我的代码

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

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


答案 1

您可能正在像以前一样调用方法。因此,像这样的程序: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

您需要在调用之前使用。'\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()


答案 2

推荐