私は次のコードを得ました:
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.nextLine();
}
そして、そのコードの出力は次のとおりです。
How many names are you going to save:3
Type a name: Type a name: John Doe
Type a name: John Lennon
名の入力をスキップしたことに注意してください??それをスキップして、2番目の名前のエントリにまっすぐ進みました。私はこれを引き起こす原因を探してみましたが、私はそれを釘付けできないようです。誰かが私を助けてくれることを願っています。ありがとう
エラーの理由は、nextIntが整数ではなく、改行をプルすることです。 forループの前にin.nextLine()を追加すると、空の新しい行が使用され、3つの名前を入力できるようになります。
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];
in.nextLine();
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
または、単に行を読み取って値を整数として解析します。
int nnames;
String names[];
System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = Integer.parseInt(in.nextLine().trim());
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
sc.nextLine()を使用します。文字列の最後の行を読み取ることができるように2回
sc.nextLine()sc.nextLine()
In.nextInt()が行を変更しないためです。したがって、最初に「Enter」を押して(3を押した後)、ループ内のin.nextLine()によってendOfLineが読み取られます。
ここで行うことができる小さな変更:
int nnames;
String names[];
System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = Integer.parseInt(in.nextLine());
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
これはin.nextInt()がint番号のみを受け取り、新しい行を受け取らないためです。 3を入力してEnterキーを押すと、行末がin.nextline()によって読み取られます。
ここに私のコードがあります:
int nnames;
String names[];
System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = in.nextInt();
in.nextLine();
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
単純に置き換えることができます
names[i] = in.nextLine();
with names[i] = in.next();
Next()を使用すると、スペースの前にあるもののみが返されます。 nextLine()は、現在の行を返した後、スキャナーを自動的に下に移動します。