28

次のコードを取得しました。

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 番目の名前のエントリに直行しました。これの原因を調べてみましたが、釘付けにできないようです。誰かが私を助けてくれることを願っています。ありがとう

4

5 に答える 5

26

エラーの理由は、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();
}
于 2009-09-23T14:48:30.923 に答える
7

sc.nextLine(); を使用します。文字列の最後の行を読み取ることができるように2回

sc.nextLine() sc.nextLine()

于 2017-01-31T12:14:31.583 に答える
2

これは、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();
}
于 2013-12-20T04:54:46.443 に答える
0

あなたは単に交換することができた

names[i] = in.nextLine();names[i] = in.next();

next() を使用すると、スペースの前にあるものだけが返されます。nextLine() は、現在の行に戻った後、スキャナーを自動的に下に移動します。

于 2015-08-27T06:25:55.060 に答える