0

事前に分を設定するたびに時間の値を取得したいのですが、分が60になる場合は、自動的に1時間を追加する必要があり、分はゼロになります。これは私のクラスの私のコードです。

public class time {
  private int hours;
  private int minutes;
  private String amPm;

  public time() {
  }

  public time(int hours, int minutes, String amPm) {
    this.hours = hours;
    this.minutes = minutes;
    this.amPm = amPm;
  }

  public void advance(int aminutes){
    if(minutes > 0){
      minutes = minutes + aminutes;
      while(hours < 0){

      }
    }
  }

  @Override
  public String toString() {
    String time = hours + " " + minutes + " " + amPm + ".";
    return time;
  }
}

エラーが表示されるため、コードに何が欠けていますか?

4

2 に答える 2

2

比較的単純です。

advanceにを足し、59 より大きいminutes場合はを 60 で割ります。これにより、足し始めた時間数が得られます。次に、残りの分数を取得するために 60 で変更します...minutesminutesminutes

public void advance(int aminutes) {
    minutes = minutes + aminutes;
    if (minutes > 59) {
        int moreHours = Math.round(minutes / 60);
        minutes = minutes % 60;
        hours += moreHours;
    }
}

さて、問題は。代わりにa を使用しないのはなぜCalendarですか??

public class Time {

    public static void main(String[] args) {
        Time time = new Time();
        time.advance(90);

        System.out.println(time);
    }

    private Calendar cal;

    public Time() {
        cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
    }

    public Time(int hours, int minutes) {
        this();
        cal.set(Calendar.HOUR, hours);
        cal.set(Calendar.MINUTE, minutes);
    }

    public void advance(int aminutes) {
        cal.add(Calendar.MINUTE, aminutes);
    }

    @Override
    public String toString() {
        String time = cal.get(Calendar.HOUR_OF_DAY) + " " + cal.get(Calendar.MINUTE);
        return time;
    }
}
于 2012-12-18T01:15:35.003 に答える
0

@MadProgrammerは非常に真実ですjava.util.Calendarクラスを使用してください。このクラスは Date よりもインテリジェントです。

以下はサンプルコードです。

Calendar cal = Calendar.getInstance();

System.out.println(cal.get(Calendar.HOUR)+" :: "+cal.get(Calendar.MINUTE));

cal.add(Calendar.MINUTE, 80);

System.out.println(cal.get(Calendar.HOUR)+" :: "+cal.get(Calendar.MINUTE));

分が 60 を超えると、時間フィールドに自動的に加算されます。

于 2012-12-18T04:39:03.850 に答える