Can';我想不出这个java.nullpointerexception

Can';我想不出这个java.nullpointerexception,java,nullpointerexception,Java,Nullpointerexception,经过三十分钟的研究和研究,我仍然无法理解为什么会发生java.nullpointerexception错误。这是创建LongDate(我创建的一个类)对象数组的主程序。如果错误可能在其他类中,请询问代码,我可以将其提供给您。谢谢 public class Assignment1 { public static void main(String[] args) { //creates an array of type LongDate filled with two LongDate

经过三十分钟的研究和研究,我仍然无法理解为什么会发生java.nullpointerexception错误。这是创建LongDate(我创建的一个类)对象数组的主程序。如果错误可能在其他类中,请询问代码,我可以将其提供给您。谢谢

public class Assignment1 {

public static void main(String[] args) {

    //creates an array of type LongDate filled with two LongDate objects

    LongDate [] collectionOfDates = { new LongDate("February",2,1996), new LongDate("November",13,1999) };

    // loops through the array and displays output of getDate() for each object

    for( int i = 0; i < collectionOfDates.length; i++ ) {

        System.out.println( collectionOfDates[i].getDate() );

    }

}

}
仅供参考,Date是老师给我的.class文件。因此,我无法给出源代码。我知道它包含(-表示私有,#表示受保护,+表示公共):


正如前面的海报所说,错误在您的
LongDate
构造函数中。问题出在
if
表达式中。变量
monthName
尚未初始化。相反,它应该是
m
,因为这是参数

if (monthName.equals("January")) {
    month = 1;
} else if (monthName.equals("February")) {

此外,该类中也存在类似的问题。

该错误可能发生在LongDate类中。哪一行抛出异常?我猜它是
System.out.println(collectionOfDates[I].getDate()),并且您没有按照自己认为的方式设置日期。LongDate数组行。您想要LongDate类代码吗?哪个“LongDate数组行”?在何处创建阵列或在何处尝试使用阵列?请具体说明。是的,您需要显示LongDate代码。它是您的LongDate构造函数。给我们看看代码。给自己找一个更好的编辑器,比如记事本++,它可以显示行号。在代码中,如图所示,
LongDate
构造函数中的
monthName
保证为
null
。如果(monthName.equals(“一月”)
,它将在
行抛出一个NPE。不仅如此,构造函数变量名是“m”,而不是monthName。这是行不通的。@mttdbrd你是说,如果我把所有的monthName改成m,把monthName=editMonth(monthName)改成monthName=editMonth(m),它就无法修复我的程序了?顺便说一句,这就是助教、讲师或教授有办公时间和电子邮件地址的原因之一。这样你就可以接近他们。
-month: int
-day: int
-year: int

#editMonth(int m): int
#editDay (int d): int
#editYear (int y) : int
+Date()
+setDate(int m, int d, int y): void
+Date( int m, int d, int y)
+getDate(): String
+getMonth(): int
+getDay(): int
+getYear(): int
if (monthName.equals("January")) {
    month = 1;
} else if (monthName.equals("February")) {