我正在尝试用Java创建一个显示军事时间的时钟类,我的老师给了我们一个使用时钟“引擎”的ClockTester.java。我已经让它正确显示,但我无法正确添加时间 它全部显示在军事时间,所以添加12:00:00和15:00:00应该给我03:00:00,而不是27:00:00,就像它给我...但我做的很麻烦那。
以下是我的(新)数学方法:
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);
}
如果您需要查看/知道其他任何事情来帮助我,请告诉我。感谢。
答案 0 :(得分:2)
如果你在加法小时方法中以15开始,那么它首先取24的模数12,然后将它添加到原始数量并制作27.你需要做的是添加检查你是否已通过,24或60而不是添加,重置它。
public void addHours(int h){
int sum = this.hours + h;
this.hours += (sum % 24);
}
答案 1 :(得分:0)
你应该做的是包括一个while循环,然后循环它。虽然时间大于24:00:00(或等效秒数:84600),但您应该减去24小时。在addTime(...){...}中添加:
while (hours*3600 + mins*60 + secs > 84600) {
hours -= 24;
}
你可能与if()语句一样好,因为时间永远不会超过48小时。但为了安全起见,请使用while。 如果声明格式:
if (hours*3600 + mins*60 + secs > 84600) {
hours -= 24;
}