Warum können wir nicht Lesen, ein Zeichen zu einem Zeitpunkt aus dem System.in?

Dem folgenden Programm druckt jedes Zeichen geschrieben auf standard, aber nur nach einem neue-Zeile geschrieben worden ist (zumindest auf meinem system!).

public class Test {
    public static void main(String[] args) throws java.io.IOException {
        int c;
        while ((c = System.in.read()) != -1)
            System.out.print((char) c);
    }
}

Dies verhindert, dass die Leute schreiben Sachen wie "Drücken Sie eine beliebige Taste, um fortzufahren" und zwingt so etwas wie "Drücken Sie die EINGABETASTE, um fortzufahren."

  • Was ist der Grund HIERFÜR?
  • Ist es eine Einschränkung von Java?
  • Ist dieses Verhalten systembedingt (ich bin auf Ubuntu)? Wie funktioniert es auf Mac? Windows?
  • Ist es abhängig von der jeweiligen Klemme ich die Anwendung laufen? (Für mich verhält es sich wie dies in Eclipse und im gnome-terminal)
  • Gibt es eine Abhilfe?
InformationsquelleAutor aioobe | 2010-10-24
Schreibe einen Kommentar