2017-03-01 14 views
1

これは宿題のためのものです。私はインストラクターの許可を得てここに投稿しています。この割り当ては、年内に作成されたクラスにメソッドを追加して、2つの時間の差(時間と分)を検索することです。私が抱えている問題は、コースのウェブサイトのコードランナーが、かなり離れている2つの時間の差を見つけるときにエラーがあると言いますが、私に提供されたランナーを使用して、私が書いたコードを壊す時間。以下はコードです2回の違いを見つけるときの問題

public class Time implements Comparable 
{ 
    private int hour; 
    private int minute;  

    public Time() 
    { 
     hour = 0; 
     minute = 0; 
    } 

    public Time(int h, int m) 
    { 
     if (h>=1&&h<=23) 
      hour = h; 
     else hour = 0; 
     if (m>=0&&m<=59) 
      minute = m; 
     else minute = 0; 
    } 

    public String toString() 
    { 
     String hourStr = new String(); 
     String minStr = new String(); 
     if (hour<10) 
      hourStr = "0" + Integer.toString(hour); 
     else hourStr = Integer.toString(hour); 
     if (minute<10) 
      minStr = "0" + Integer.toString(minute); 
     else minStr = Integer.toString(minute); 
     String milTime = hourStr + minStr; 
     return (milTime); 
    } 

    public String difference(Time t) 
    { 
     int base = Integer.parseInt(toString()); 
     int compy = Integer.parseInt(t.toString()); 
     int comp = Math.abs(compy-base); 
     if (comp%100>=60) { 
      comp-=(comp%100-(60-Math.abs((compy%100)-(base%100)))); 
     } 
     String reee = "000" + Integer.toString(comp); 
     reee = reee.substring(reee.length()-4, reee.length()); 
     reee = reee.substring(0, 2) + ":" + reee.substring(2,4); 
     reee = "Time difference: " + reee; 
     return reee; 
    } 
} 

私は無関係の方法をいくつか削除しました。ここで私に提供されたランナーからのコードの特定のブロックがある:

Time t4 = new Time(12, 40); 
    Time t5 = new Time(5, 45); 
    System.out.println(t4.compareTo(t5)); 
    System.out.println(t5.compareTo(t4)); 
    System.out.println("Difference"); 
    System.out.println(t4.difference(t5)); 
    System.out.println(t5.difference(t4)); 
    System.out.println(t4.difference(t4)); 

のcompareTo部品が正常に動作しますが、差分法は、ウェブサイトは、私が間違ってい言うことです。しかし、Times t4とt5をどのような組み合わせに置き換えても、私に問題はありません。おそらく私のコードに間違っていると思われますが、それはおそらくウェブサイトを飛び越えますか?

+0

あなたがテストしている「ウェブサイト」が含まれていないため、この質問をトピックとしてクローズすることにしました。あなたとあなたのウェブサイトとの間の問題をどうやって引き出すのですか? – ControlAltDel

+1

なぜ生のタイプを使用していますか?????? –

+1

t4-t5とt5-t4を別々に考えているかもしれません。あなたの例では、t4-t5 = t5-t4 = 6:55でも、t5-t4は17:05になることもあります。だから私はそれがいくつかの問題を作成するかもしれないと思います。 – Sanjeev

答えて

1

9:55と10:05の違い - 10分ということに同意しますか? 5分から過去10〜5分10

に私がにt4t5を変更:

Time t4 = new Time(10, 5); 
    Time t5 = new Time(9, 55); 

今、あなたのプログラムを印刷:私の推測では、これがどのようなサイトであることを

Difference 
Time difference: 00:50 
Time difference: 00:50 
Time difference: 00:00 

ですに反対している。

Integer.parseInt(toString())の結果を差し引いています。私はこれが健全だとは思わない。差が50の場合、9:05から9:55(実際には50分)か9:55から10:05(わずか10分)かどうかを判断できません。別々に時間を差し引く必要があります。そして、2つの相違が正反対の兆候を持っている場合は、別々に時間を差し引いてから調整を行います。

関連する問題