【问题标题】:If and else statments Java trying to stop a statement HomeworkIf 和 else 语句 Java 试图停止一个语句 作业
【发布时间】:2012-06-02 07:18:54
【问题描述】:

这是我的代码...

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() 到下午 12:01 因为我的 if hours.getValue == 0 然后我们将它设为 12,但稍后在该方法中它是 if hours。 getValue() == 12 使它成为下午。我想避免这种情况。在维护相当简单的 java 的同时对此有何想法?

已解决谢谢。如果 hours.getValue() == 0

我只是添加了 12 而不是 setValue(12)

【问题讨论】:

    标签: java if-statement clock bluej


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我不熟悉你的意思......而且因为它的任务我真的不能超出我们假设你知道的学习。你是对的,虽然在内部它是 24 小时,但我只需将其显示为 12 .. 我可以通过这个 12:01。我将我的值设置为 12,但下次我显示它会看到 12 并把它作为一个下午,它不会在这个时候......
      • mod是除法的其余部分,在Java中与%符号一起使用。 4 % 3 = 1 ; 24 % 12 = 0
      • 唯一的问题是,24h != 0am,但是 12pm。同样持续 12 小时。它需要额外的处理(OP 已经拥有它的方式)。
      【解决方案3】:

      为什么不在 12 小时内做你该做的事?

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

      【讨论】:

      • 你说得对,我已经在下午使用它我不知道为什么我没有在上午看到它。非常感谢老兄
      猜你喜欢
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 2017-08-12
      • 1970-01-01
      • 2022-01-06
      • 2018-04-12
      相关资源
      最近更新 更多