我在自己设定的项目上挣扎。我希望用户能够输入时间,但它需要合法(即如果时间是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;
}
}
答案 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.mm
和mm
之和是否大于59.我们只需将mm
添加到this.mm
,然后添加整数除法结果this.mm / 60
到hh
。同时将此整数除法的余数设置为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);
重复