0

次のようなターミナルウィンドウに値を入力する必要がある場所に取り組んでいます。

開始時間:0800 終了時間:1200

次に、この人の開始時刻と終了時刻が範囲内にあるかどうかを確認する必要があります。したがって、勤務時間が 0900 ~ 1700 で、現在 11:45 の場合、上記のユーザーは利用可能として表示されますが、1201 の場合、上記のユーザーは利用できません。

現在、時間を文字列として取得するだけです:

void setWorkHours(String hrs)
    {
        this.hours=hrs;
    }

    public String getWorkHours()
    {
        return hours;
    }

どんな助けでも大歓迎です。

乾杯

4

3 に答える 3

2

ユーザーが開始日時と終了日時を入力できるとよい。これにより、ユーザーは 1 週間全体を一度に入力できます。

それにもかかわらず、解決策はほとんど同じです。

  • 開始時刻 (日付/時刻) をCalendarインスタンスに変換します。
  • 終了時刻 (日付/時刻) を Calendar インスタンスに変換します。
  • Calendar after メソッドと before メソッドを使用して、入力された時刻 (日付/時刻) が開始時刻と終了時刻の間にあるかどうかを判断します。
于 2013-03-15T15:54:09.687 に答える
1

宿題をするつもりはありませんが、次の提案をします。

  1. 端末から入力を取得する必要があります ( を参照System.in) 。
  2. 入力を解析する必要があります。これを行うには、有効な入力を決定する必要があります。「0800」、「08:00」、「08.00」、「8:00」、「8:00 AM」、「07:60」、「8時」…どれが有効で、どれが拒否しますか?エラー処理戦略は何ですか? アプリケーションを爆破するだけですか、それともユーザーに素敵なメッセージを提供しますか?
  3. 入力を解析するためにどのデータ型を使用していますか? 、、、、の 4 つがあるints場合startHoursstartMinsありendHoursますendMins。あるいは、Java のDateorCalendarオブジェクトを使用するかもしれません。他にもオプションがあります。最適なオプションを選択する必要があります。
  4. 秒を気にしますか?ミリ秒?
  5. 勤務時間を解析したら、与えられた時間を基に勤務時間内か時間外かを判断するメソッドが必要になります。おそらくこれは別の入力です。それを解析する必要があります (ヒント、解析にはユーティリティ メソッドを使用し、ここでは再利用します)。その後、何らかの計算を行うメソッドに渡します。のようなものbool isInOfficeHours(int hours, in mins)。このメソッドのパラメーターは、営業時間の格納に使用しているデータ型と一致するはずです。

これがお役に立てば幸いです。

于 2013-03-15T15:58:27.187 に答える
0

以下は、startTime と endTime で 2 つの文字列を取り、好きなように範囲を定義する必要がある範囲オブジェクトと比較するコードです。コードを説明するためにコメントを付けました。

     /*
      * this method will split hhmm time into two parts. 
      */
 public String[] getTimeHHMM(String time){   
      String hhmm[] = new String[2];

      if(time !=null && time.length() > 1){
          hhmm[0] = time.substring(0, time.length() - 2);
          hhmm[1] = time.substring(time.length() - 2, time.length());
      }
      else{
          // time not formatted correctly so deal with here
          hhmm[0] = "";
          hhmm[1] = time;
      }
      return hhmm;
 }

     //assuming hrs is a string containing only one time in the format hhmm
     String startTime[] = getTimeHHMM(startTimeStr);
     String endTime[] = getTimeHHMM(endTimeStr);


    int startTimeHrs =  Integer.parseInt(startTime[0]);
     int startTimeMins = Integer.parseInt(startTime[1]);

     int endTimeHrs = Integer.parseInt(endTime[0]);
     int endTimeMins = Integer.parseInt(endTime[1]);

     Date start = new Date();
     Date end = new Date();


 Calendar start = Calendar.getInstance();
 start.set(Calendar.HOUR_OF_DAY, startHrs);
 start.set(Calendar.MINUTE, startMins );

 Calendar end = Calendar.getInstance();
 end.set(Calendar.HOUR_OF_DAY, endHrs);
 end.set(Calendar.MINUTE, endMins );

 ///lets say the range is startRange and endRange it should be Calendar instances, you will need to construct these as I did above with setting your range whatever you like
 Calendar endRange;
 Calendar startRange;

 if(start.compareTo(startRange) >= 0 && end.compareTo(endRange) <=0 ){

    // Here it means it is within working hours


 }
于 2013-03-15T16:24:33.460 に答える