ユーザーの入力を読み取るためにJavaのスキャナーを使用しています。 nextLineを1回だけ使用すると、問題なく動作します。 2つのnextLineを使用すると、最初はユーザーが文字列を入力するのを待機しません(2番目は待機します)。
出力:
X:Y:(入力待ち)
私のコード
System.out.print("X: ");
x = scanner.nextLine();
System.out.print("Y: ");
y = scanner.nextLine();
なぜこれが起こり得るのでしょうか?ありがとう
以前に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
の入力の読み取りを待機していることです。 。
nextLine()
を呼び出す前に、_'\n'
_を使用する必要があります。
_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()
を直接呼び出すのがより良い方法です)。