Java Scanner クラスの文字列読み取り [重複]
-
13-09-2019 - |
質問
この質問にはすでに答えがあります:
- Java Scanner クラスの文字列読み取り 5 つの答え
次のコードを取得しました。
int nnames;
String names[];
System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = in.nextInt();
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.next();
}
System.out.println(names[0]);
このコードを実行すると、スキャナーは姓ではなく名のみを取得します。また、名前を入力しようとすると行がスキップされることがあります。あたかも名前を空白のままにしたように表示され、次の名前にスキップします。何が原因なのかわかりません。
誰かが私を助けてくれることを願っています!
編集:in.nextLine(); を試してみました。完全な名前は修正されますが、行は保持されます。出力例は次のとおりです。
How many names are you going to save: 3
Type a name: Type a name: John Doe
Type a name: John Lennon
解決
の代わりに:
in.next();
使用します。
in.nextLine();
それは改行文字nextLine()
を見つけるまで '\n'
は文字を読み込み
他のヒント
それは空白で区切り文字を、遭遇したときに読み取りを停止する .next。代わりにnextLine
メソッドを使用します。
あなたの初期nextInt()した後、あなたの入力中の空の改行がまだあります。だから、あなたのnextInt()の後にnextLine()を追加し、あなたのループに入ります:
...
Scanner in = new Scanner(System.in);
nnames = in.nextInt();
in.nextLine(); // gets rid of the newline after number-of-names
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
...
使用してみてください。
System.out.println()
の代わりに:
System.out.print()
所属していません StackOverflow