2017-04-03 131 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]); 

在我的情況下,輸入如下─(請注意,它甚至沒有在指數2.numQ是3要求的值)

enter image description here

這裏是輸出。

Output of the code

見,在queries[0],它存儲空白值(藍色選擇爲空白)。在queries[ 1 ],它存儲所述第一輸入端(它是要存儲在索引0.And它存儲索引1值在索引2等等。)

那麼我的代碼有什麼問題。 在此先感謝:-)

+0

當使用nextInt'和'nextLine'的'組合,提防仍然有一個需要處理的緩衝區(即新線)的內容。也許使用'nextLine'並在結果上使用另一個'Scanner'來獲得'numQ' – MadProgrammer

+0

我沒有注意到它是與掃描儀相關的問題。並且從未發現它是重複的 – LalaByte

+0

如果您輸入4 5,則按Enter鍵,有用。它正在拾取輸入值,空白並放入。 –

回答

1

我想sc是一個掃描儀對象。方法nextInt()僅在換行之前掃描int部分。所以,你必須使用sc.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]);