如何更改程序以允许用户输入花时间?

时间:2015-07-13 13:34:56

标签: java console

我在自己设定的项目上挣扎。我希望用户能够输入时间,但它需要合法(即如果时间是9:15并且他们增加4小时,则必须是01:15 请帮忙!

package time;

public class NewTime {

    int hh, mm;

    public NewTime(int hh, int mm) {
        if (hh > 0 && hh < 24 && mm > 0 && mm < 60) {

            this.hh = hh;
            this.mm = mm;

        }
    }

    public void addTime(int hh, int mm) {
        if (mm + this.mm > 59) {
            this.hh += mm / 60;
        }

        this.hh += hh;
        this.mm += mm;
    }
}

3 个答案:

答案 0 :(得分:1)

你的问题在于:

public void addTime(int hh, int mm) {
    if (mm + this.mm > 59) {
        this.hh += mm / 60;
    }

    this.hh += hh; //<--source of problem
    this.mm += mm;
}

在所有添加之后,您还需要检查hh变量是否大于12. an如果它超过12扣除12.那么更正的格式将是:

public void addTime(int hh, int mm) {
    this.hh += hh;
    this.mm += mm;
    this.hh += this.mm / 60;
    this.mm = this.mm % 60; //This removes the problem where the mm may be 59 and this.mm is 2 
    this.hh = this.hh % 12; //This solves the problem of hour not getting over 12.
}

此处不是检查this.mmmm之和是否大于59.我们只需将mm添加到this.mm,然后添加整数除法结果this.mm / 60hh。同时将此整数除法的余数设置为this.mm。我们用hh重复相同的事情,只存储this.hh和12的整数除法的余数,以12小时格式给出输出。

这应该解决你的问题。

答案 1 :(得分:0)

我建议使用mod运算符。当用户增加4个小时。使用if语句。如果新小时大于12,则修改新小时以获得正确的时间。

即。

 9:15 + 4 hours => 13:15
 13 % 12 => 1
 New time = 1:15

答案 2 :(得分:0)

您可能希望使用LocalDateTime API(在Java 8中添加)。

LocalDateTime now = LocalDateTime.now();
LocalDateTime twoHoursFromNow = now.plusHours(2);

获取用户时间输入需要解析:

LocalDateTime inputTime = LocalDateTime.parse("2015-07-13T10:00:00");
LocalDateTime twoHoursFromInputTime = inputTime.plusHours(2);

此问题可能与Adding n hours to a date in Java?

重复