1

这是我的代码...

private void updateDisplay() {
    if(hours.getValue() == 0){
        hours.setValue(12);
        displayString = hours.getDisplayValue() + ":" + 
        minutes.getDisplayValue() + " am"; 
    }
    else if(hours.getValue() < 12){
        displayString = hours.getDisplayValue() + ":" + 
        minutes.getDisplayValue() + " am";
    }
    else if(hours.getValue() == 12){
        displayString = hours.getDisplayValue() + ":" + 
        minutes.getDisplayValue() + " pm";
    }
    else if(hours.getValue() < 24){ 
        displayString = hours.getValue() - 12 + ":" +  
        minutes.getDisplayValue() + " pm"; 
    }
}

所以基本上这是一个我试图以 12 小时格式显示的时钟。当它从晚上 11:59 开始变化时

我让它说是上午 12:00,但是一旦我 timeTick() 因为我的 if hours.getValue == 0 到了下午 12:01,然后我们将它设为 12,但稍后在方法中它的 if hours.getValue() == 12 下午。我想避免这种情况。在维护相当简单的java的同时有什么想法吗?

已解决 谢谢。如果 hours.getValue() == 0 我只是添加了 12 而不是 setValue(12)

4

3 回答 3

1

为什么不只是在小时数等于 12 时做你所做的事情呢?

不要实际设置小时值,只需在打印时添加 12。

于 2012-05-27T17:33:17.823 回答
0

假设hours.getValue()返回一个int,你可以这样做hours.getValue()/13 == 0 ? hours.getValue() + ":" + minutes.getDisplayValue() + " AM": hours.getValue() - 12 + ":" + minutes.getDisplayValue() + " PM";。该表达式称为三元运算符,int 数据类型修剪十进制结果。

我更新了它来做所有事情。我希望你喜欢 1 班轮。

于 2012-05-27T17:48:39.067 回答
0

内部使用 24 小时制,但使用“hours mod 12”显示其值

于 2012-05-27T17:34:04.223 回答