2013-05-17 2 views
0

사용자가 작업 이름, 시간 및 날짜와 같은 정보를 입력하는 스케줄러 응용 프로그램에서 작업하고 있습니다. 응용 프로그램은 현재 시간에 작업이 있으면 매분마다 확인해야하며 창을 팝업하거나 소리를냅니다. 이제 나는 확인 과정에 박혀있다.캘린더 클래스를 사용하는 스케줄러

public static void main(String[] args) { 
    try{ 
    final BufferedReader br = new BufferedReader(new FileReader("D://Courses//PlannerText.txt")); 

    final Runnable checker = new Runnable() { 

     public void run() { 

      Calendar cal = Calendar.getInstance(); 
      System.out.println("This is time before if statement "+cal.get(Calendar.HOUR) +":" + cal.get(Calendar.MINUTE)); 
      try { 
       String line = null; 
       while ((line = br.readLine()) !=null) 
       { 
        String[] currTask = line.split("\\|"); 

        if (cal.get(Calendar.MINUTE)== Integer.parseInt(currTask[2]) 
         && cal.get(Calendar.HOUR) == Integer.parseInt(currTask[3])){ 


         System.out.println("This is time after if statement "+cal.get(Calendar.HOUR) +":" + cal.get(Calendar.MINUTE)); 
         System.out.println("This is the time of the task "+currTask[3]+":"+currTask[2]); 

         JFrame reminderFrame = new JFrame("Reminder"); 
         reminderFrame.setVisible(true); 
         reminderFrame.setLocation(200,200); 
        } 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 
    final ScheduledFuture checkerHandle = scheduler.scheduleAtFixedRate(checker, 0, 1, TimeUnit.MINUTES); 
    scheduler.schedule(new Runnable() { 
     public void run() { 
      checkerHandle.cancel(true); 
     } 
    }, 1, TimeUnit.DAYS); 
    }catch(FileNotFoundException e){ 
     e.printStackTrace(); 
    } 
} 

프레임 업을 팝업하지 않는 경우 현재 시간 = 작업의 텍스트 파일의 시간, 그래서 누군가가이 코드 조각으로 무엇이 잘못되었는지 말해 것입니다!

미리 감사드립니다. :)

+0

여기서 currTask [2]는 텍스트 파일의 분 필드이고 이고 currTask [3]은 텍스트 파일의 시간 필드입니다. –

+0

** 당신이 ** 무엇이 잘못되었는지 우리에게 말하면 ** 더 나은 해결책이 될 것입니다 ** – SJuan76

+0

이것을 손으로 완전히 할 이유가 있습니까? cron4j와 같은 것을 사용 하는게 어떨까요? – greedybuddha

답변

0

디버깅의 개념에 오신 것을 환영합니다. 중단 점 또는 인쇄물을 디버깅하여 currTask 배열의 값을 표시하십시오.

아마 중 잘못된 배열 인덱스를 사용하거나 시간이 (어쩌면 HOUR_OF_DAY)

+0

답변 해 주셔서 감사합니다. 이전에 배열의 값을 출력했지만 괜찮 았습니다. HOUR_OF_DAY로 시도했지만 아무런 효과가 없습니다. 그러나 코드가 처음 실행될 때 코드가 제대로 작동한다는 것을 알아 냈습니다. 물론 타이밍이 동일하면 당연히 작동합니다. 그것은 틀을 튀어 나와 내 모든 진술을 인쇄합니다. 그러나 매분마다이 작업을 수행하지 않고 if 문 앞에있는 내용 만 인쇄하고 if 문은 수행하지 않습니다. –

0

감사합니다 모두 잘못하지만 내 버퍼 독자가 밖으로 내 run() 메소드의 때부터 그것을 밖으로 ... 생각했다, 파일은 매분마다 시작될 때 한 번만 읽혀졌습니다.

관련 문제