2015-04-14 27 views
0

我想在Java中创建一个时钟类,它将显示军事时间,而我的老师给了我们一个ClockTester.java,它使用我们的时钟“引擎” 。我已经得到它正确显示,但我无法正确添加时间。
它全部显示在军事时间,所以加入12:00:00和15:00:00应该给我03:00:00,而不是27:00:00就像它给我...但我有麻烦做到这一点。添加时间到一个时钟(不工作) - JAVA

这里是我的(新)的数学方法:

public void addHours(int h){ 
    int sum = this.hours + h; //Keeps the hours value within real boundaries 
    this.hours += (sum % 24); 
} 

public void addMinutes(int m){ 
    int sum = this.mins + m; 
    this.addHours(m/60); 
    this.mins += (sum % 60); 
} 

public void addSeconds(int s){ 
    int sum = this.secs + s; 
    this.addMinutes(s/60); 
    this.secs += (sum % 60); 
} 

public void addTime(int h, int m, int s){ 
    addHours(h); 
    addMinutes(m); 
    addSeconds(s); 
} 

请让我知道如果你需要查看/知道什么要帮助我。谢谢。

回答

2

如果你在15小时的加法小时方法中开始,那么它将首先采用24的模数为12,然后将它添加到你的原始数量,并使27.你需要做的是添加一个检查,看看你是否已经通过,24或60,而不是添加它,让它重置。

public void addHours(int h){ 
     int sum = this.hours + h; 
     this.hours += (sum % 24); 
    } 
+0

打我吧! 1 + –

+0

恐怕我还不明白该做什么分钟和秒......现在我有:(看上面的帖子编辑) – Mazzone

0

你应该做的是包括一个while循环,并循环它。虽然时间大于24:00:00(或其等效秒数:84600),但您应该减去24小时。在ADDTIME(...){...}补充:

while (hours*3600 + mins*60 + secs > 84600) { 
    hours -= 24; 
} 

您可以用if()语句是一样好,因为时间绝不会超过48小时以上。但为了安全起见,请使用这个时间。 如果对账单格式:

if (hours*3600 + mins*60 + secs > 84600) { 
    hours -= 24; 
}