nextLine() の動作の修正
2 番目のコード例で nextLine() を使用するときに発生する問題は、nextInt() の組み合わせに起因します。
の問題nextInt()
nextLine() は、Enter キーを押す前に入力された空白や文字を含む行全体を消費します。ただし、 nextInt() は数値のみを消費します。数字以外の文字または空白文字が数字の後に続く場合、 nextLine() はそれらを読み取ろうとし、予期しない動作が発生します。
解決策: 残りの改行を消費する
nextLine() が意図したとおりに完全な行を読み取る場合は、各 nextInt() の後に nextLine() 呼び出しを追加して、行上の残りの文字を消費できます。これにより、 nextLine() を使用して文を読み取るときに、完全な行を受け取ることが保証されます。
修正付きの例:
// Example #2 (Corrected) import java.util.Scanner; class Test { public void menu() { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("\nMenu Options\n"); System.out.println("(1) - do this"); System.out.println("(2) - quit"); System.out.print("Please enter your selection:\t"); int selection = scanner.nextInt(); scanner.nextLine(); // Consume remaining newline if (selection == 1) { System.out.print("Enter a sentence:\t"); String sentence = scanner.nextLine(); System.out.print("Enter an index:\t"); int index = scanner.nextInt(); System.out.println("\nYour sentence:\t" + sentence); System.out.println("Your index:\t" + index); } else if (selection == 2) { break; } } } }
以上が`nextInt()` の後に`nextLine()` が誤動作するのはなぜですか? そしてそれを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。