0
我有一個程序,控制電子組件。我的問題是倒數的部分。實際上,如果我從主方法調用CountDown類,它將不會返回到主類。該程序必須始終處於活動狀態,並讀取主呼叫中的第一個值並開始倒計時。 這是代碼:Java的倒計時結束,沒有返回到主
public class CountDown
{
public static int a;
public static Timer timer;
public CountDown()
{
timer = new Timer();
timer.schedule(new DisplayCountdown(), 0, 1000);
}
class DisplayCountdown extends TimerTask
{
int seconds = 15;
public void run()
{
if (seconds > 0)
{
System.out.println(seconds + " seconds remaining");
if(READING BY ELECTRONIC COMPONENT == 1)
{
seconds=15;
} else {
seconds--;
}
} else {
System.out.println("Countdown finished");
CountDown.a=0;
}
}
}
public static void main(String args[])
{
CountDown.a = 0;
while(true)
{
if(READING ELECTRONIC COMPONENT == 1)
{
if (CountDown.a==0)
{
CountDown.a = 1;
new CountDown();
}
}
}
}
這不正確的使用'TimerTask'。他們的目的是讓事情發生在後臺,而你的軟件做其他事情(你只是安排一些代碼來執行),所以它當然不會等到倒計時完成後再返回主服務器。你究竟想用這個做什麼?如果我們知道目標是什麼,那麼建議一種替代方法會更容易。 – Thor84no 2012-07-24 11:05:53
我有一個傳感器和一個電子元件,當傳感器值爲1時,它開始倒計時,每次檢測到運動時都會復位。當傳感器爲0並且倒計時結束時,它應該繼續用main if來監視傳感器。謝謝! – Kerberos 2012-07-24 11:18:02
@ Kerberos:你確定主要的方法會被調用嗎?告訴我,如果我錯了,但我認爲你通過調用construtor中的內部類來開始循環。 – reporter 2012-07-24 11:24:37