簡體   English   中英

如何使用if語句停止計時器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM