Why get an InputMismatchException in this elementary Java program?

exception, input, java, type-mismatch

Solution

`nextInt` doesn't swallow the end of line, that stays in the buffer. So when you hit 1enter, `1` is read into the first `score`, then the second `name` is set to an empty string.

Then the parser tries to interpret `second` as an `int`, raising the exception.

You'll need to discard the current line after the `readInt`.

Problem

``` 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(); } ``` Above is my simple program and the following shows the exception that pops up. ``` 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 ```

Original source