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