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

このメソッドを使用して時計の表示を変更することだけを想定しています.何時間も取り組んできましたが、値が入力された場合の要件を満たしています。以下に、私が使用している他のクラスの関連部分を表示します..編集済み今、真夜中のロール時に午前に留まりません

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;
    }
}
4

1 に答える 1

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));

追加2:

手動で計算する必要がある場合、最も簡単な方法は次のとおりです。

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());
}
于 2012-05-27T07:47:07.393 に答える