In the answer to this question I don't understand why the input.nextInt
has a newline character as a leftover.
Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo()?
See Question&Answers more detail:osIn the answer to this question I don't understand why the input.nextInt
has a newline character as a leftover.
Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo()?
See Question&Answers more detail:osThe answer is quite simple:
Scanner#nextInt()
reads the next integer but not the newline (ENTER
) the user presses to submit the integer.
To understand this you must know that everything you type will be written to a buffer, from which the Scanner
methods try to read from.
Regard the following example:
System.out.println("Enter a number: ");
int i = scanner.nextInt();
System.out.println("Enter a line: ");
String l = scanner.nextLine();
What will happen:
Enter a number:
and will press 17
and ENTER
.17
but leave the newline of the ENTER
.Enter a line:
but the scanner will read the newline of the ENTER
instead of waiting for input.