What does System.in.read actually return?
What does : System.in.read() return ? The documentation says : Returns: the next byte of data, or -1 if the end of the stream is reached. But for example if I enter : 10 I get back 49 . Why is that ? 49 is the ASCII value of the char 1 . It is the value of the first byte. The stream of bytes that is produced when you enter 1 0 Enter on your console or terminal contains the three bytes {49,48,10} (on my Mac, may end with 10,12 or 12 instead of 10, depending on your System). So the output of the simple snippet int b = System.in.read(); while (b != -1) { System.out.println(b); b = System.in.read(