2017-08-12 10 views
0

ループ条件によってプログラムが終了したときに次の要素の出力が得られる理由がわかりません。私が3を入力すると、プログラムは3番目の値を求めて終了しますが、何も入力しませんでした。あなたがin.nextInt()を使用している場合は、それが唯一の入力ストリームから整数値を読み込む必要な出力が得られませんでした

Scanner in = new Scanner(System.in); 
    System.out.println("number of word you want to input"); 
    int NumberOfWord = in.nextInt(); 
    System.out.println("input the words-->"); 
    for (int i = 0; i <= NumberOfWord; i++) { 
     userInput[i] = in.nextLine(); 
     System.out.println("enter your "+(i+1)+"th word"); 
+0

'nextInt(から始まっているよう<=を使用すると、1つのより多くの価値を尋ねますあなたのループ条件あなたの中にもnextInt()

int NumberOfWord = Integer.parseInt(in.nextLine()); System.out.println("input the words-->"); for (int i = 0; i < NumberOfWord; i++) { userInput[i] = in.nextLine(); System.out.println("enter your " + (i + 1) + "th word"); } 

を使用しているので、それが起こっていた問題の世話をします) 'は入力された番号の直後に終了し、残りの行を終了するために別の' nextLine() 'が必要です(空の場合もあります)。 –

+0

userInputを適切に宣言します。これは未定義です。 – Tehmina

答えて

1

問題は何ですか。しかし、その後に続く改行文字は読み込まれません。

ダミーin.nextLine()を使用して、ループ内でnextLine()メソッドを呼び出す前に、整数値の後に続く改行文字を読み取るために使用します。

int NumberOfWord = in.nextInt(); 
in.nextLine(); 
System.out.println("input the words-->"); 
for (int i = 0; i < NumberOfWord; i++) { 
    userInput[i] = in.nextLine(); 
    System.out.println("enter your " + (i + 1) + "th word"); 
} 

もう1つの解決策は、nextLine()メソッド自体を使用して整数値も読み取ることです。 nextLine()メソッドは、改行文字を終了ポイントとしてストリームから行全体を読み込みます(改行文字も含みます)。あなたのループが0

+0

私が欲しいのは...別の入力を求める最後の出力を印刷しないことです –

+0

@RafiUddinはansを編集して問題を修正しました。 – Joe

+0

感謝の男....しかし、in.nextLine();しました –

関連する問題