2017-01-23 18 views
0

Ich habe ein prozedurales Java-Programm, das mehrere Segmente hat, die ich manuell ausführen möchte (mit "Enter drücken, um fortzufahren").Java Warten auf Eingabe drücken (nicht mehrere Tasten drücken)

Ich habe gerade mit System.in.read() oder Scanner versucht, aber wenn ich mehrere Eingabe drücken würde, wird automatisch das nächste Segment ausgeführt.

Wie kann ich dieses Verhalten regulieren?

+0

möglich duplizieren: http: //stackoverflow.com/questions/18281543/java-using-scanner-ent-key-pressed? Rq = 1 –

+0

Können Sie den Eingabepuffer leeren, nachdem jedes Segment abgeschlossen wurde? Ich habe es nicht versucht, aber tut etwas wie [Pseudocode] System.in.read ([Byte-Array von in.available() Länge]); alles "spülen". –

Antwort

0

Ich würde vorschlagen, BufferedReader anstelle von System.in.read() zu verwenden. Es hat auch einen eingebauten Spülmechanismus.

0

Sie müssen alles aus dem InputStream entfernen, bevor Sie auf die nächste Eingabe warten.

System.in.available() gibt die Anzahl der Bytes im Stream zurück.

System.in.read(new byte[System.in.available()]); 

Dies löscht den Stream, so dass der Benutzer jetzt erneut etwas eingeben muss.

Hinweis: System.in.skip() funktioniert aus irgendeinem Grund nicht.

Verwandte Themen