苦苦挣扎一些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";
    }
}

08-18 06:51