Liebes Forum,
Ich arbeite an folgender Aufgabe: Eine Lokomotive soll in einen Bahnhof fahren, dort einige Sekunden warten bis die Leute eingestiegen sind und dann fortfahren. Dazu habe ich einen javax.swing.Timer verwendet, welchen ich als innere Klasse im konstruktor implementiert habe. Dieser setzt ein Flag (done) auf true, sobald die gewünschte Zeit verstrichen ist.
Hier eine Ausschnitte aus dem Code:
dann in der Methode, wo der Timer gestartet wird:
Nun das Problem:
Normalerweise bekomme ich in der while-Schleife eine Endlosschleife, AUSSER wenn ich darin einen Befehl habe wie oben. So wie's oben steht, funzt also alles. Allerdings möchte ich nicht meine Konsole zutexten. Ich möchte einfach die paar Sekunden warten, bis der Zug weiterfährt.
wieso bekomme ich da eine Endlossschleife? Wie kann die die Umgehene, wo liegt der Fehler?
Vielen Dank schon im Voraus!
Ich arbeite an folgender Aufgabe: Eine Lokomotive soll in einen Bahnhof fahren, dort einige Sekunden warten bis die Leute eingestiegen sind und dann fortfahren. Dazu habe ich einen javax.swing.Timer verwendet, welchen ich als innere Klasse im konstruktor implementiert habe. Dieser setzt ein Flag (done) auf true, sobald die gewünschte Zeit verstrichen ist.
Hier eine Ausschnitte aus dem Code:
Code:
class Boarding implements ActionListener
{
private int time;
public Boarding(int time)
{
this.time = time;
}
public void actionPerformed(ActionEvent event) {
if (time <= 0) {
done = true;
timer.stop();
Logger.log(Logger.INFO, "boarding time over!");
}
else {
Logger.log(Logger.INFO,"boarding time left: " + time);
time--;
}
}
}
Boarding listener = new Boarding(4); // seconds boarding time
timer = new Timer(DELAY, listener);
dann in der Methode, wo der Timer gestartet wird:
Code:
timer.start();
while (!done) {
// boarding
Logger.log(Logger.INFO, "Second call: boarding time over!"+" ("+done+")");
}
Logger.log(Logger.INFO, "after the loop"+" ("+done+")");
Nun das Problem:
Normalerweise bekomme ich in der while-Schleife eine Endlosschleife, AUSSER wenn ich darin einen Befehl habe wie oben. So wie's oben steht, funzt also alles. Allerdings möchte ich nicht meine Konsole zutexten. Ich möchte einfach die paar Sekunden warten, bis der Zug weiterfährt.
wieso bekomme ich da eine Endlossschleife? Wie kann die die Umgehene, wo liegt der Fehler?
Vielen Dank schon im Voraus!