Name: nt126004 Date: 07/19/2002
FULL PRODUCT VERSION :
java version "1.4.0_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0_01-b03)
Java HotSpot(TM) Client VM (build 1.4.0_01-b03, mixed mode)
FULL OPERATING SYSTEM VERSION :
ADDITIONAL OPERATING SYSTEMS :
A DESCRIPTION OF THE PROBLEM :
As of JDK 1.4 there seems to be no way to get the input
buffer (via System.in) unless a newline is also
entered. InputStream/Reader methods like available()
and ready() return 0/false until a newline
This means <tt>System.in</tt> always appears to
work in "cooked" mode (both on windows and an linux).
This makes writing command line type programs and
also games very hard in Java.
System.in should be enhanced to allow "raw" input.
Actually, the same problem exists in previous versions
of the JDK too. It really is a OS-dependent thing
(there is a syscall in Unix to turn on/off cooked mode
for terminal/console input).
So, it would be nice for a method call or parameter
via which the Java user could specify cooked vs. raw
That way, the JVM could do whatever needs to be
done for the platform it was running on. Without
the ability to specify cooked vs raw in java, it
becomes impossible to write portable programs that
expect immediate input from the user via the terminal.
This is mentioned in the java FAQ too (I think) and
it's been discussed on comp.lang.lava.programmerbefore.
There really isn't a portable solution until andunless
this functionality in incorporated in Java. (would
be nice in JDK 1.5)
This bug can be reproduced always.
(Review ID: 158682)