2017-04-03 5 views
-2

これはかなり単純なコードのようです。しかし、これを実行すると、私には奇妙な出力が得られます。 最初に、queries[] Arrayという要素の数を変数NumQに格納します。次に、0からnumQ-1までループすることで要素の値を格納します。それ以外の場合は動作します。私の場合はこのJAVAコードが期待どおりに機能しないのはなぜですか?

int numQ=sc.nextInt(); 
    String queries[]=new String[numQ]; 
    for(int i=0;i<numQ;i++){ 

     queries[i]=sc.nextLine(); 
    } 
System.out.println(queries[0]); 
System.out.println(queries[1]); 
System.out.println(queries[2]); 

、入力がare-(それもインデックス2.numQで値を求めていないことに注意3である)

enter image description here

そして、ここでは出力されます。

Output of the code

参照は、queries[0]で、それがあった最初の入力が(インデックス、インデックス1の値を記憶0.Andに格納する格納、ブランク値はqueries[ 1 ] .AT(青選択が空白である)を格納しますインデックス2など)

私のコードには何がありますか。 ありがとうございます:-)

+0

をスキップするsc.nextLine()を使用し、まだ処理する必要があるバッファ(すなわち新しい行)でコンテンツがある用心しなければなりません。おそらく 'nextLine'を使用し、結果に別の' Scanner'を使用して 'numQ'を取得します – MadProgrammer

+0

私はそれがScannersに関連した問題であることに気付かなかったでしょう。それは重複していることを見たことはありません – LalaByte

+0

4 5をタイプし、できます。それは、入力値を空白にして入れています。 –

答えて

1

私はscがスキャナオブジェクトだとします。メソッドnextInt()は、改行の前にint部分のみをスキャンします。だから、nextInt`と `` nextLine`の組み合わせを使用する場合は、改行

int numQ=sc.nextInt(); 
sc.nextLine(); 

String queries[]=new String[numQ]; 
for(int i=0;i<numQ;i++){ 
    queries[i]=sc.nextLine(); 
} 
System.out.println(queries[0]); 
System.out.println(queries[1]); 
System.out.println(queries[2]); 
関連する問題