如何使用if语句停止计时器

时间:2016-01-17 22:09:38

标签: java if-statement timer

我正在尝试停止一个从十秒钟到零的计时器。 问题是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");
    }


}

1 个答案:

答案 0 :(得分:0)

如果你想每秒写一次finish的值,你应该设计你的代码来打印它,不仅仅是在启动时......

ATM finish仅在main方法中打印,而不是在其他地方打印。将该行移至Runnable使用的Timer,它应按预期打印。