我正在尝试停止一个从十秒钟到零的计时器。 问题是finish方法只返回第一个tick,而不是将所有数字减少到一个。 如何使布尔方法每秒返回一个值,而不仅仅是第一个?
import java.util.Timer;
import java.util.TimerTask;
public class Countdown {
static int interval;
static Timer timer;
boolean off;
public Countdown() {
int seconds = 10;
int delay = 1000;
int period = 1000;
timer = new Timer();
interval = seconds;
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
System.out.println(setInterval());
}
}, delay, period);
}
private int setInterval() {
off = false;
if (interval == 1){
timer.cancel();
off = true;
return --interval;
}else{
off = false;
return --interval;
}
}
public boolean finish(){
return off;
}
}
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
public static void main(String[] args){
Countdown countDown = new Countdown();
countDown.finish()
System.out.println(countDown.finish);
if(countDown.finish() == true){
System.out.println("works");
}
}
答案 0 :(得分:0)
如果你想每秒写一次finish
的值,你应该设计你的代码来打印它,不仅仅是在启动时......
ATM finish
仅在main方法中打印,而不是在其他地方打印。将该行移至Runnable
使用的Timer
,它应按预期打印。