I have a BufferedReader waiting for input, but for some reason it doesn’t wait for the second read and continues to print my third print statement.
Code:
BufferedReader inFromUser =new BufferedReader(new InputStreamReader(System.in));
char letter,xVal;
int yVal;
System.out.println("Please enter a letter for your word.(a-z)");
letter=(char)inFromUser.read();
System.out.println("Please enter a X location for this piece.(A-J)");
xVal=(char)inFromUser.read();
System.out.println("Please enter a Y location for this piece.(0-9)");
yVal=inFromUser.read();
Example execution goes as follows:
Please enter a letter for your word. //Waits on input here
a
Please enter a X location for this piece. //Doesn’t wait here???
Please enter a Y location for this piece.
This is happening because once you press enter after typing a letter, you are also sending the newline character into the stream.
When you call
read()the first time it returns the first character as expected. However, when you callread()the second time it will simply read in the newline character that is buffered in the stream, thereby seeming like it skipped over a read instruction.The solution is to tell the
BufferedReaderto read the entire line, then fetch the first character from the line:You may also want to improve upon this by doing some validation in case the user simply presses enter without inputting a letter.