好的,所以我是新来的,刚刚注册但是我需要帮助解释一下..
我有一项任务要求我通过做一些调整将24小时制转换为12小时制。我很确定我几乎就在那里但是当代码中使用timeTick方法改变小时时我无法获得布尔值。说实话,我相信其余的都很好,但任何帮助都会受到赞赏:
public class ClockDisplay
{
private NumberDisplay hours;
private NumberDisplay minutes;
private String displayString;
private boolean isAM;
/**
* Constructor for ClockDisplay objects. This constructor
* creates a new clock set at 00:00.
*/
public ClockDisplay()
{
hours = new NumberDisplay(12);
minutes = new NumberDisplay(60);
updateDisplay();
setMorn();
}
/**
* Constructor for ClockDisplay objects. This constructor
* creates a new clock set at the time specified by the
* parameters.
*/
public ClockDisplay(int hour, int minute)
{
hours = new NumberDisplay(12);
minutes = new NumberDisplay(60);
setTime(hour, minute);
setMorn();
}
/**
* This method should get called once every minute - it makes
* the clock display go one minute forward.
*/
public void timeTick()
{
minutes.increment();
if(minutes.getValue() == 0) { // it just rolled over!
hours.increment();
}
if (hours.getValue() == 12)
{
isAM = !isAM;
}
updateDisplay();
}
private void setMorn()
{
isAM = true;
}
private void setAft()
{
isAM = false;
}
/**
* Set the time of the display to the specified hour and
* minute.
*/
public void setTime(int hour, int minute)
{
hours.setValue(hour);
minutes.setValue(minute);
updateDisplay();
}
/**
* Return the current time of this display in the format HH:MM.
*/
public String getTime()
{
return displayString;
}
/**
* Update the internal string that represents the display.
*/
private void updateDisplay()
{
int hour = hours.getValue();
String daynight;
if (isAM = true)
{
daynight = "AM";
if (hour == 0)
{
hour = 12;
}
}
else
{
isAM = false;
daynight = "PM";
if (hour == 0)
{
hour = 12;
}
}
displayString = hour + ":" +
minutes.getDisplayValue() + daynight;
}
}
我们拥有什么
答案 0 :(得分:4)
你的问题几乎肯定在以下几行:
if (isAM = true)
这实际上是将isAM
设置为true
,因此表达式的结果也是true
,因此永远不会执行else
部分。
你可能意味着:
if (isAM == true)
或 - 更好的是:
if (isAM)
答案 1 :(得分:0)
好的,所以我终于解决了,感谢Dragondraikk让我思考。这个问题就像他建议的那样,很好。因为我将小时数设置为0 - 11并勾选。在updateDisplay运行之前,我没有将0更改为12,所以它实际上是0而不是12:
public void timeTick()
{
minutes.increment()
if(minutes.getValue() == 0) { // it just rolled over!
hours.increment();
}
if (hours.getValue() == 0)
{
isAM = !isAM;
}
updateDisplay();
}
这解决了问题,现在可行了:)谢谢大家的帮助。我也知道我可以以评级的形式提供反馈,如果有人可以告诉我我是多么乐意做所以:)