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