2012-07-11 37 views
3
String[] names=new String[4]; 
int[] scores=new int[4]; 
Scanner keyboard = new Scanner(System.in); 
System.out.println("Enter 4 strings and integers:"); 
for(int i=0;i<4;i++){ 
    names[i]=keyboard.nextLine(); 
    scores[i]= keyboard.nextInt(); 
} 

以上是我的簡單程序,下面顯示了彈出的異常。爲什麼在這個初級Java程序中得到InputMismatchException?

Enter 4 strings and integers: 
first 
1 
second 
Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Scanner.java:909) 
    at java.util.Scanner.next(Scanner.java:1530) 
    at java.util.Scanner.nextInt(Scanner.java:2160) 
    at java.util.Scanner.nextInt(Scanner.java:2119) 
    at Q2.main(Q2.java:15) 
Java Result: 1 

回答

10

nextInt不吞行的末尾,即保持在緩衝器中。因此,當您點擊 輸入,1被讀入第一個score,則第二個name被設置爲空字符串。

然後解析器試圖將second解釋爲int,引發異常。

您需要在readInt之後丟棄當前行。

+0

你可以提出任何方便的方法來拋棄'readInt'後的當前行嗎? – 2012-07-11 20:42:22

+0

提示:事實上,當你閱讀第二個「名字」時,你已經在這麼做:) – Mat 2012-07-11 20:44:07

+0

明白了。非常感謝你! – 2012-07-11 20:45:33

相關問題