如果在其他地方以某种方式回答了这个问题,我深表歉意,但是我对 Java 的了解还不够,无法从其他情况中识别出类似的问题。
在这里获取所有信息可能很困难,因此我将尝试获取要点。
我正在编写一个日历程序,当我在演示类中调用构造函数时:
System.out.println("Enter month (1 - 12)");
month = console.nextInt();
System.out.println("Enter year (> 1500)");
year = console.nextInt();
Calendar myCalendar = new Calendar(month, year);
我在调用构造函数的那一行得到一个空指针异常。我也在构造函数本身的第一个函数调用中得到一个:
public Calendar(int m, int y)
{
firstDate.setDate(m, 1, y);
firstDayOfMonth();
}
setDate 方法调用中的第二个数字是 1,因为我使用的是我已经编写的日期类,而对于日历,只需要月份和年份,因此我将日期设置为 1。
在那之后,我的错误消息对我来说变得不那么容易理解了,如下所示:
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
我正在使用 DrJava 来执行此操作,如果这有什么不同的话。如果有人可以帮助我了解发生了什么,以便我可以解决问题,那就太好了。我知道这里可能没有足够的信息来提供实际的解决方案,但是如果我了解发生了什么,我可能会通过一些额外的研究来弄清楚。我知道当使用尚未初始化的参数调用函数时会发生空指针异常,但是通过我的代码回溯,在方法调用之后,我找不到任何未在任何地方定义的东西。我认为那些其他错误消息将帮助我知道空指针的来源。
在此先感谢,如果我在这里违反了某些规则,我们深表歉意。
Edit1:我初始化 firstDate 如下:`private ExtDate firstDate;' 我会尝试那些 Print 语句,也许这会有所帮助。
Edit2:好吧,我想我明白了。谢谢您的帮助。学习过程等等。