好的,所以我对此并不陌生,并且刚刚注册,但是我需要一些解释方面的帮助。

我有一项作业,要求我通过进行一些调整将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;


  }
}

我们拥有
  • 添加一个布尔值字段isAM,其值为true(今天上午)和false(今天下午)。
  • 我们创建两个新方法;将isAM设置为true的setMorning和将isAM设置为false的setAfternoon。
  • 这两个构造函数都默认将一天中的时间初始化为早晨,因此都调用setMorning。
  • 在timeTick中,我们需要检查小时数是否已过去,这意味着它是从上午更改为下午还是从下午更改为上午。注意使用:isAM =!isAM
  • 在updateDisplay中,我们需要根据isAM是true还是false创建后缀“am”或“pm”。
  • 最佳答案

    您的问题几乎可以肯定是在以下行中显示的:

    if (isAM = true)
    

    实际上,这实际上是将isAM设置为true,因此表达式的结果也是true,因此else部分将永远不会执行。

    您可能的意思是:
    if (isAM == true)
    

    或-更好的是:
    if (isAM)
    

    10-04 22:47