-1

我为输出月份和月份编号而构建的类构建并运行良好,但是在我的类中的某个地方,我的monthString 只是被分配了空值。我看不到我在哪里遇到了这个错误,我为我的错误代码道歉。泰!~~~

public class MonthClass
{

private int monthNum;
private String monthString;



    public MonthClass(int num)
{
        monthNum = num;
        monthString = monthName(num);
}

    public void setmonthNum(int num)
{
        monthNum = num;
        monthString = monthName(num);
}   


public String getmonthName(int num)
{




 switch (num)
  {
 case 1: monthString = "January";
    break;
 case 2: monthString = "Febuary";
    break;
 case 3: monthString = "March";
    break;
 case 4: monthString = "April";
    break;
 case 5: monthString = "May";
    break;
 case 6: monthString = "June";
    break;
 case 7: monthString = "July";
    break;
 case 8: monthString= "Augest";
    break;
 case 9: monthString = "September";
    break;
 case 10: monthString = "October";
    break;
 case 11: monthString = "November";
    break;
 case 12: monthString = "December";
    break;
 default: monthString = "This is not a month, re-enter a number";
    break;

  }
  return monthString;
 }






    public String monthName(int num)
{
        return monthString;
}

public String toString()
{
return "The month number is " + monthNum + " and the month name is " + monthString;
}
}
4

1 回答 1

2

问题是您的代码在任何地方都没有修改monthString,并且它的值始终保持不变null(引用类型的默认值)。

而不是monthName你应该打电话getmonthName(从月份数字到字符串的转换正在那里发生):

monthString = getmonthName(num);

方法monthName只是一个吸气剂- 它不会修改monthString. 此外,由于此方法不使用任何参数,您也可以摆脱它:

public String monthName() {
    return monthString;
}

此外,在语句中的default情况下switch,非月份字符串的分配将无声地发生。您可能还想在控制台上打印一些东西。

于 2013-11-08T18:00:30.513 回答