Zeichenweises einlesen geht in Java afaik nicht. Dein Programm "sieht" den Input von STDIN erst nachdem <Enter> (kann aber plattformabhängig was aderes sein, obwohl ichs nicht glaub) gedrückt wurde.
Die einzig wirklich brauchbare Lösung ist eine, die erst ab JDK 1.4 funktioniert: Buffer (in dem Fall wohl konkret CharBuffer oder ByteBuffer). Du müsstest eine plattformspezifische - ANSI C bietet sich da an... - Methode schreiben und sie mittels JNI einbinden. Buffer sind so designed, dass sie problemlos mit native Methoden zusammen verwendet werden können. Du findest sie in der Package java.nio