Java Scanner はユーザー入力を待ちません [重複] 質問する

Java Scanner はユーザー入力を待ちません [重複] 質問する

私は Java の Scanner を使用してユーザー入力を読み取ります。 nextLine を 1 回だけ使用すれば、問題なく動作します。 nextLine が 2 つある場合、最初の nextLine はユーザーが文字列を入力するのを待ちません (2 番目は待ちます)。

出力:

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())。

おすすめ記事