I am using Java's Scanner to read user input. If I use nextLine only once, it works OK. With two nextLine first one doesnt wait for user to enter the string(second does).
Output:
X: Y: (wait for input)
My code
System.out.print("X: ");
x = scanner.nextLine();
System.out.print("Y: ");
y = scanner.nextLine();
Any ideas why could this happen? Thanks
It's possible that you are calling a method like nextInt()
before. Thus a program like this:
Scanner scanner = new Scanner(System.in);
int pos = scanner.nextInt();
System.out.print("X: ");
String x = scanner.nextLine();
System.out.print("Y: ");
String y = scanner.nextLine();
demonstatres the behavior you're seeing.
The problem is that nextInt()
does not consume the '\n'
, so the next call to nextLine()
consumes it and then it's waiting to read the input for y
.
You need to consume the '\n'
before calling nextLine()
.
System.out.print("X: ");
scanner.nextLine(); //throw away the \n not consumed by nextInt()
x = scanner.nextLine();
System.out.print("Y: ");
y = scanner.nextLine();
(actually a better way would be to call directly nextLine()
after nextInt()
).