私はJavaをブラッシュアップするための小さな目覚まし時計アプリケーションを作成しています。このアプリの目的は、ユーザーが時計の時刻と目覚まし時刻を設定できるようにすることです。システム時刻が目覚まし時刻と等しくなると、アラームが「鳴ります」。
clockクラスには、CalendarオブジェクトとDateオブジェクトが含まれています。
クロックは、クラス外のmainメソッドから参照されます。その主な方法では、ユーザーが時計とアラームの時刻を設定できる簡単なコマンドラインユーザーインターフェイスを構築しました。デフォルトでは、クロックは現在のシステム時刻に初期化されます。
ただし、ここで問題が自動的に初期化された時計オブジェクトとユーザー定義の時計オブジェクトの両方にあります。これらは「ティック」または更新されていません。
Clock regularClock = new Clock(); //Defaults clock (using a Date) to the system time
while (userInput != "Quit")
{
switch(userInput)
{
...Other choices here...
case "Set Time": System.out.print("Enter hour: ");
hours = kb.nextInt();
System.out.print("\nEnter minutes: ");
minutes = kb.nextInt();
ACR.regularClock.setTime(hours, minutes);
System.out.println("Clock has been set");
case "Set Alarm": System.out.print("Enter hour: ");
hours = kb.nextInt();
System.out.print("\nEnter minutes: ");
minutes = kb.nextInt();
ACR.alarmClock.setTime(hours, minutes);
ACR.alarmClock.setAlarmOn(true);
System.out.println("Alarm has been set.");
break;
...Other choices here...
userInput = keyboard.next();
}
ご覧のとおり、regularClockを更新またはチェックし続けるためのループなどはありません。何らかの理由で、私が始めたとき、DateオブジェクトとCalendarオブジェクトは、作成されると実行され続けると思いました-ストップウォッチのようなものです。
だから今、私はそれらを更新するための最良の方法は、このwhileループで何であるか疑問に思っています。デフォルトのシステム時刻のみが許可されていれば、それは簡単です。whileループの開始時に毎回新しいDateオブジェクトを作成するだけで済みます。ただし、それを選択した場合、ユーザーが作成した時刻が上書きされます。
また、ユーザーが入力を入力せず、代わりにアプリをそこに置いて入力を入力する場合でも、時刻を更新して、regularClock = alarmClocktimeかどうかを確認する必要がありますか?これどうやってするの?
今はとりとめのないものだと気付いたので、そのままにしておきます。私はこれに取り組んできましたが、最善の解決策を見つけることができません。ご不明な点がございましたら、お気軽にお問い合わせください。
簡単な要約の質問:
変更されている場合でも、日付またはカレンダーオブジェクトの時刻を刻むにはどうすればよいですか?
ユーザー入力を待っている間、これらのオブジェクトを継続的に更新するにはどうすればよいですか?