使用BlueJ将24时钟更改为12

时间:2012-05-27 07:00:33

标签: java oop if-statement clock bluej

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 = Integer.toString(hours.getValue() - 12) + ":" +  
        minutes.getDisplayValue() + " pm"; 
    }
}

我只是假设使用这种方法来改变时钟的显示..我已经工作了几个小时但是我卡住了因为某种原因在这种方法中它继续跳转到else语句,即使输入的值符合if要求。下面我将显示我正在使用的其他课程的相关部分。现在只是在午夜滚动时不​​会停留在上午

public int getValue()
{
    return value;
}

// Return the display value (that is, the current value as a two-digit
// String. If the value is less than ten, it will be padded with a leading
// zero).
public String getDisplayValue()
{
    if(value < 10) {
        return "0" + value;
    }
    else {
        return "" + value;
    }
}

// Set the value of the display to the new specified value. If the new
// value is less than zero or over the limit, do nothing.
public void setValue(int replacementValue)
{
    if((replacementValue >= 0) && (replacementValue < limit)) {
        value = replacementValue;
    }
}

1 个答案:

答案 0 :(得分:1)

我认为你错过了else

private void updateDisplay()
{
  if(hours.getValue() < 12)
     displayString = hours.getDisplayValue() + ":" +
            minutes.getDisplayValue() + " am";

 [this one] >>>> else if(hours.getValue() >= 12 && hours.getValue() < 25)
     displayString = Integer.toString(hours.getValue() - 12) + ":" + 
            minutes.getDisplayValue() + " pm";

  else {
    hours.setValue(12);
    displayString = hours.getDisplayValue() + ":" + 
                    minutes.getDisplayValue() + " am";
  }
}

<强>加了:

您还可以使用SimpleDateFormat格式化您的时间。方法如下:

SimpleDateFormat from = new SimpleDateFormat("H");
SimpleDateFormat to = new SimpleDateFormat("h a");

return to.format(from.parse(hours.getValue));

<强> Added2:

如果需要手动计算,最简单的方法是:

if (hours.getValue() == 0) {
    return "12 am";
} else if (hours.getValue() < 12) {
    return hours.getValue() + " am";
} else if (hours.getValue() == 12) {
    return "12 pm";
} else if (hours.getValue() < 24) {
    return (hours.getValue()-12) + " pm";
} else {
    throw new ParseException("Invalid hours value: "+hours.getValue());
}