Schleife per Tastendruck abbrechen

Status
Nicht offen für weitere Antworten.

seth.gecko

Mitglied
Hey leute...

Ich schreibe gerade eine diskrete Simulation - die sollte per Tastendruck abgebrochen werden.

Ich hab schon den Tipp bekommen das ich in einem zweiten thread System.in.read zum 'hören' aufrufen soll.

also ich habe jetzt eine Thread:


Code:
Thread ListenerThread extends Thread {

boolean isRunning;

public void run() {

    while (isRunning) {

--------------> jetzt weiß ich aber nicht wie das syntaxkorrekt zu formierlen ist
--------------> es soll hier immer per system.in abgefragt werden ob taste gedrückt wurde, aber wie schreib ich da??
    }

}

danke schonmal.
 
schreibe
System.in.read();

und das Programm wird solange blockieren, bis jemand Enter drückt,
auf andere Zeichen kannst du nicht direkt reagieren ohne JFrame & Co.

außerdem ist zu beachten, dass read() nur ein Zeichen liest,
wenn jemand "Test[Enter]" eintippt, dann braucht es 4x read() bis wieder blockiert wird

besser mit einem BufferedReader + readLine() eine ganze Zeile einlesen
 
Code:
while (true){
              hier deine Aktion (vermutlich eine Eingabe)

     if (eingabe.equals(""){
    return false;}

Dies wäre eine Möglichkeit, das Problem zu lösen!
 
SlaterB hat gesagt.:
schreibe
System.in.read();

und das Programm wird solange blockieren, bis jemand Enter drückt,
auf andere Zeichen kannst du nicht direkt reagieren ohne JFrame & Co.

außerdem ist zu beachten, dass read() nur ein Zeichen liest,
wenn jemand "Test[Enter]" eintippt, dann braucht es 4x read() bis wieder blockiert wird

besser mit einem BufferedReader + readLine() eine ganze Zeile einlesen

hmm es soll ja nicht blockieren bis jemand enter drückt... das wäre ja quasi starten per taste
es soll ja laufen bis jemand enter drückt
 
deswegen ja 'zwei Threads',
einer macht das was ich beschrieben habe, und setzt nach Ende des Blockierens vielleicht eine boolean-Variable auf false,

der andere arbeitet vor sich hin und schaut alle x Sekunden vorbei, ob das boolean-Flag geändert wurde
 
Code:
String input = IOTools.readLine("Title?: ");

while (true){
    if (!input.equals("")){
        System.out.println("Eingabe war erfolgreich!);
    }
    else { System.err.println("Eingabefehler");
              break;
    }
}

dann wird das Programm bei Drücken von "Enter"-Taste abgebrochen
 
@patrickN
99% aller Java-Programmierer kennen keine IOTools,
und wieso eine Schleife, wenn du nur vorher einmal eine Zeile einliest?

die Schleife wird entweder sofort abgebrochen oder endlos durchlaufen

----

mehr Beispiel gibts von mir aber nicht, erstmal selber anfangen, einlesen usw,
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben