为什么在这个基本的Java程序中得到一个InputMismatchException?

时间:2012-07-11 20:20:46

标签: java exception input type-mismatch

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();
}

上面是我的简单程序,下面显示了弹出的异常。

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

1 个答案:

答案 0 :(得分:10)

nextInt不会吞下保留在缓冲区中的行尾。因此,当您点击 1 输入时,1将被读入第一个score,然后第二个name被设置为空字符串。

然后解析器尝试将second解释为int,从而引发异常。

您需要在readInt之后丢弃当前行。