gpt4 book ai didi

构造函数调用中的Java Null指针异常

转载 作者:行者123 更新时间:2023-11-29 03:36:49 26 4
gpt4 key购买 nike

如果在其他地方以某种方式回答了这个问题,我深表歉意,但我对 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:好的,我想我明白了。谢谢您的帮助。学习过程等等。

最佳答案

NullPointerException发生,当你在某处使用 null 时,你应该使用一个对象。 (有关详细信息,请参阅引用资料)。

简而言之:在您的代码中的某处,您有一个空引用而不是一个对象。您之前可能没有初始化它,这就是您得到该异常的原因。

关于您的错误陈述,该对象可能是 firstDate。您可以在 firstDate.setDate(m, 1, y); 调用之前使用 System.out.println(firstDate); 调用来检查它。可能会打印出 null

关于构造函数调用中的Java Null指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15057203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com