1. ホーム
  2. java

[解決済み】Java Scannerがユーザー入力を待たない【重複あり

2022-02-04 17:26:12

質問

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

出力してください。

<ブロッククオート

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 .

を消費する必要があります。 '\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() ).