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

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

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
4

1 回答 1

10

nextInt不会吞下行尾,而是留在缓冲区中。所以当你点击1enter,1被读入第一个score,然后第二个name被设置为一个空字符串。

然后解析器尝试解释secondint,引发异常。

您需要在readInt.

于 2012-07-11T20:26:01.673 回答