2

私は以下を使用して入力を受信しようとしていますjava.util.Scanner

Scanner scanner = new Scanner(System.in);
int bla = scanner.nextInt();
String blubb = scanner.nextLine();

ただし、nextLine()コマンドはスキップされ、空の文字列が返されます。どうすればこの問題を解決できますか?

4

3 に答える 3

11

このnextIntメソッドは整数の後の改行文字を消費しないため、呼び出すnextLineと、整数の直後の改行文字を読み取るだけです。

この入力がある場合:

42\n
foo\n

readInt呼び出しは42改行文字を消費しますが、消費しません:

\n
foo\n

これで、呼び出すreadLineと、改行文字のみを含む最初の行の残りが消費されます。

解決

整数の後の残りの行を破棄してみてください。

int bla = scanner.nextInt();
scanner.nextLine(); // Discard the rest of the line.
String blubb = scanner.nextLine();

または、nextLine一貫して使用して各行を読み取り、文字列を自分で整数に解析します。

String blaString = scanner.nextLine();
int bla = Integer.valueOf(blaString);
String blubb = scanner.nextLine();
于 2012-12-21T16:47:43.533 に答える
4

スキップされません:

int bla = scanner.nextInt(); 

改行を消費しないので、Enterを入力した後にヒットしたとき、スキャナーはまだ最初の行にありますint。次に、スキャナーは現在の行(入力した行int)を消費する必要があることを確認し、その余りをに入れblubbます。

于 2012-12-21T16:48:55.613 に答える
-1

スキャナーが静止しているときにも同様の問題が発生しました。ローカルの新しいスキャナーを作成しましたが、入力要求をスキップしませんでした。

于 2015-01-21T04:37:49.353 に答える