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);
}
}}
2
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