Javaで軍事時間差

dynamitem:

ここに私の時間間隔クラスがあります:

public class TimeInterval {

   private int fTime;
   private int sTime;

   public TimeInterval(int fTime, int sTime) {
      if(fTime < 0 || fTime > 2400 || sTime < 0 || sTime > 2400) {
          System.out.println("Illegal times, must be < 2400 and > 0)");
          System.exit(0);
      } else {
          this.fTime = fTime;
          this.sTime = sTime;
      }
   }

   public int getHours() {
      return Math.abs((fTime - sTime) / 100);
   }

   public int getMinutes() {
       return Math.abs((fTime - sTime) % 100);
   }

   public double getDecimalTime() {
      return getHours() + ((double) getMinutes() / 60);
   }
}

そして、私のテスタークラス:

import java.util.*;

public class TestTimeInterval {

   public static void main(String[] args) {

      Scanner s = new Scanner(System.in);
      System.out.print("Please enter the first time: ");
      int fTime = s.nextInt();
      System.out.print("Please enter the second time: ");
      int sTime = s.nextInt();

      TimeInterval t = new TimeInterval(fTime, sTime);

      System.out.printf("%s: %2d hours %2d minutes \n", "Elapsed time in hrs/min ", t.getHours(), t.getMinutes());
      System.out.printf("%s: %.2f", "Elapsed time in decimal", t.getDecimalTime());

   }    
}

しかし、それは正確に一定の時間を計算し、私は例0150と0240のために入力した場合、その差は50分でなければなりませんが、代わりにそれは90が表示され、私はそれが60の上に行くと、時間と分に残りを変換しないようにする必要があり。私は他のいくつかの数字を入力した場合が、それは動作します。すべてのヘルプは大歓迎です。

dynamitem:

私は自分の質問に答えましたが、解決策は、私は分の部分から時間を区切っていることだった(例えば、1159年11および59)、分を取得するために時間を掛けたと分の残りの部分へと付け加えました。

this.fTimeInMin = ((fTime / 100) * 60) + (fTime % 100);
this.sTimeInMin = ((sTime / 100) * 60) + (sTime % 100);

そして、中getHours()およびgetMinutes()方法は、時間と分に分を変換しました

public int getHours() {
    return Math.abs((this.fTimeInMin - this.sTimeInMin) / 60);
}

public int getMinutes() {
    return Math.abs((this.fTimeInMin - this.sTimeInMin) % 60);
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=137074&siteId=1