苦苦挣扎一些Java作业,这为什么不起作用?提前带来几分钟。如果超过59分钟,则将其添加到我的小时计数器。然后,我检查小时数是否超过12才能更改AM / PM状态。这需要反复输入数字并不断增加。我省略了其他代码,因为这是我应该能够执行的部分。
public void advance(int advance) {
int whichAmPm = 0;
minute += advance;
if (minute > 59) {
hour++;
minute = (minute - 60);
}
if (hour > 12) {
hour = (hour - 12);
whichAmPm++;
}
if (whichAmPm % 2 == 0) {
amPm = amPm;
} else if (whichAmPm % 2 !=0) {
if (amPm == "AM") {
amPm = amPm.replaceAll("A", "P");
} else {
amPm = amPm.replaceAll("P", "A");
}
}
}
最佳答案
您需要循环(而不是使用if
语句)。您可以使用-=
(如x -= y
)代替x = x - y
。然后将Object
类型(如String
)与.equals
进行比较,==
测试引用的相等性。最后,您可以使用ternary operator。我想你想要类似的东西,
public void advance(int advance) {
int whichAmPm = 0;
minute += advance;
while (minute > 59) {
hour++;
minute -= 60;
if (hour > 12) { // <-- this is safe because the above increments hour once
hour -= 12;
whichAmPm++;
}
}
if (whichAmPm % 2 != 0) {
amPm = amPm.equals("AM") ? "PM" : "AM";
}
}