Comment utiliser Java.Util.Minuterie


Je veux faire un programme simple qui compte les secondes jusqu'à 100 en utilisant Java.Util.Minuterie Le code ci-dessous est le code que j'utilise, mais il imprime simplement tous les numéros à la fois sans attendre une seconde entre chacun. Comment pourrais-je résoudre ce problème? (Ordinairement, j'utiliserais un fil.dormez mais ce n'est qu'une preuve de concept.)

import java.util.Timer;
import java.util.TimerTask;

public class Main {
    static Timer timer = new Timer();
    static int seconds = 0;

    public static void main(String[] agrs) {

        MyTimer();

    }

    public static void MyTimer() {

        TimerTask task;

        task = new TimerTask() {
            @Override
            public void run() { 
                while (seconds < 100) {
                    System.out.println("Seconds = " + seconds);
                    seconds++;
                }
            }
        };
         timer.schedule(task, 0, 1000);

    }

}}
Author: Jonathan Leffler, 2014-04-16

1 answers

N'utilisez pas cette boucle while:

    task = new TimerTask() {
        @Override
        public void run() { 
            while (seconds < 100) {
                System.out.println("Seconds = " + seconds);
                seconds++;
            }
        }
    };

La boucle while s'exécutera immédiatement car il n'y a pas de retard à l'intérieur. Au lieu de cela, vous voulez que la minuterie soit votre boucle, ce qui signifie qu'il n'y a pas besoin de cette boucle.

Utilisez plutôt un bloc if pour vérifier si le nombre est

    task = new TimerTask() {
        private final int MAX_SECONDS = 100;

        @Override
        public void run() { 
            if (seconds < MAX_SECONDS) {
                System.out.println("Seconds = " + seconds);
                seconds++;
            } else {
                // stop the timer
                cancel();
            }
        }
    };
 3
Author: Hovercraft Full Of Eels, 2014-04-15 22:37:31