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();
    }
}

現在の時間 = テキスト ファイル内のタスクの時間の場合、フレームはポップアップしません。

前もって感謝します :)

4

2 に答える 2

0

皆さんありがとうございますが、私はそれを理解しました...バッファリングされたリーダーが私の run() メソッドの外にあったため、ファイルは開始時に一度だけ読み取られ、毎分ではありませんでした。

于 2013-05-17T11:09:42.313 に答える
0

デバッグの概念へようこそ。currTask 配列の値を表示するために、ブレークポイントまたは出力のいずれかのデバッグを配置します。

おそらく、間違った配列インデックスを使用しているか、時刻が間違っています (おそらく HOUR_OF_DAY)

于 2013-05-17T02:50:28.847 に答える