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、2番目nameが空の文字列に設定されます。

次に、パーサーはsecondとして解釈しようとしint、例外を発生させます。

の後の現在の行を破棄する必要がありますreadInt

于 2012-07-11T20:26:01.673 に答える