[Java] Countdown in der Kommandozeile möglich?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Prrovoss, 14. September 2012 .

  1. 14. September 2012
    Countdown in der Kommandozeile möglich?

    hi,
    ist es möglich in der kommandozeile einen countdown anzuzeigen?
    ich meine nicht, dass immer wieder die restliche zeit per System.out.println ausgegeben werden soll, sondern dass die zeit immer aktualisiert werden soll sozusagen.

    versteht ihr wie ich das meine?
     
  2. 14. September 2012
    Zuletzt bearbeitet: 14. September 2012
    AW: Countdown in der Kommandozeile möglich?

    Versuch es mal hiermit PrintWriter
    Arbeitest du mit der CMD oder mit der Eclipse Konsole?
     
  3. 14. September 2012
    AW: Countdown in der Kommandozeile möglich?

    ich guck mri den link mal an.
    was meinst du mit eclipse konsole? meinst du diese integrierte konsole in der eclipse ide? oder gibt es von eclipse ne eigene konsole?
    also wenn das programm fertig ist, wird es in der normalen windows cmd laufen
     
  4. 14. September 2012
    Zuletzt bearbeitet: 14. September 2012
    AW: Countdown in der Kommandozeile möglich?

    Ok.
    Wäre es eine Möglichkeit mit "System.out.print()" zu arbeiten?
    Und einen Fortschrittsbalken zu simulieren?

    Mit "System.out.print("|===== |\r");" (also dem "\r") soll er eig. an den Anfang der aktuellen Zeile springen und diese überschreiben.

    Klappt aber mit der Eclipse Konsole nicht wirklich, vll. geht es ja in der CMD.

    EDIT: Grad probiert. Also das mit "\r" funktioniert es einwandfrei in der Console. Die selbe Teile wird immer wieder überschrieben.
     
    1 Person gefällt das.
  5. 14. September 2012
    AW: Countdown in der Kommandozeile möglich?

    okay, damit hats auch gut geklappt

    jetzt habe ich aber noch eine frage zu threads:

    im moment habe ich es so gelöst, dass wenn ein countdown angezeigt werden soll, wird ein thread gestartet der folgendes macht:
    (ich gehe jetzt nicht zu sehr ins detail, weils mir nur um das warten geht)

    PHP:
    public class  countdown  extends  Thread  {

        public 
    void run () {
                ....
                -
    der fortschritt des countdowns wird berechnet  ( 100 % =  countdown  abgelaufen )
                -
    der fortschritt wird ausgegeben
                
    - es wird eine sekunde gewartet
    das ganze habe ich in einer for schleife laufen, die so oft durchläuft, wie sekunden gewartet werden sollen.

    ich hab das warten einma mit sleep und einmal mit wait realisiert.
    in beiden fällen kann man aber, während der countdown läuft nichtsmehr in der cmd eingeben.
    gibts da ne bessere lösung?
     
  6. 15. September 2012
    Zuletzt bearbeitet: 15. September 2012
    AW: Countdown in der Kommandozeile möglich?

    Du kannst in deinem Konsolenschreib-Thread eine (statische) Methode "write(String text)" definieren. Wenn du etwas während dem Countdown schreiben möchtest, dann soll diese Methode aufgerufen werden.

    Auch möglich wäre ein public String cmdOutput. Diese Variable wird von außerhalb des Threads gefüllt. Bei jeder Schleifeniteration des Countdown prüfst du,ob cmdOutput==null. Wenn nein, dann:

    syso(cmdOutput);
    cmdOutput=null;
     
    1 Person gefällt das.
  7. 15. September 2012
    AW: Countdown in der Kommandozeile möglich?

    ne ich meinte, dass der user während des countdowns noch etwas eingeben können soll^^
    zb um das programm abzubrechen o.ä.
    das geht zur zeit nicht, man gibt etwas ein und drückt enter und nachdem der countdown abgelaufen ist, nimmt er diesen befehl dann erst an.
     
  8. 15. September 2012
    Zuletzt bearbeitet: 15. September 2012
    AW: Countdown in der Kommandozeile möglich?

    Dann musst du mit einer Endlosschleife immer wieder nachfragen ob der Countdown noch läuft anstatt zu warten bis dieser beendet wurde.

    Code:
    for (;;) {
     if (!countdown.isAlive())
     break;
    
     // hier kannst du Tastatureingaben abfragen
     // ...
     
     // eine Sekunde warten. 
     // Achtung: Je kleiner der Delay, desto mehr CPU-Last kostet das ganze.
     Thread.sleep(1000);
    }
    
    // countdown ist beendet.
    // weitere Programmlogik ...
    In der Countdown Klasse selbst beendest du den Thread einfach wenn 100% erreicht wurden.
     
    1 Person gefällt das.
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.