전자 부품을 제어하는 프로그램이 있습니다. 내 문제는 카운트 다운의 일부입니다. 실질적으로 main 메소드에서 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'를 적절히 사용하지 않았습니다. 당신의 소프트웨어가 다른 것들을 수행하는 동안 (당신은 단지 실행될 코드의 일정을 정하는 중이다.) 카운트 다운이 완료 될 때까지 기다리지 않고 main으로 돌아갈 때까지 기다리지 않을 것이다. 이것으로 실제로 무엇을 달성하려고합니까? 우리가 목표가 무엇인지 알면 다른 접근법을 제시하는 것이 더 쉬울 것입니다. – Thor84no
나는 센서와 전자 부품을 가지고 있는데, 센서 값이 1 일 때 움직임을 감지 할 때마다 리셋되는 카운트 다운을 시작한다. 센서가 0이고 카운트 다운이 끝나면 메인 센서로 계속해서 센서를 모니터링해야합니다. 감사! – Kerberos
@Kerberos : 주된 방법이 호출 될 것인가? 내가 틀렸다면 말해 봐라.하지만 나는 당신이 construtor에서 내부 클래스를 호출하여 루프를 시작한다고 생각한다. – reporter