[英]how to stop a timer with an if statement
我正在嘗試停止一個計時器,該計時器的時間間隔從十秒降至零。 問題在於,finish方法僅返回第一個刻度,而沒有將所有數字倒計數為一個。 如何使布爾方法每秒返回一個值,而不僅僅是第一個?
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");
}
}
如果要每秒寫一次finish
的值,則應該設計代碼以每秒打印一次,而不僅僅是在啟動時...
ATM finish
僅在主方法中進行印刷,而在其他任何地方均不印刷。 將該行移到Timer
使用的Runnable
,它應該按預期進行打印。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.