为时钟增加时间(不工作) - JAVA

时间:2015-04-14 23:04:58

标签: java class methods time clock

我正在尝试用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);
}

如果您需要查看/知道其他任何事情来帮助我,请告诉我。感谢。

2 个答案:

答案 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;
}
相关问题