我试图遍历main函数类中的Student对象数组,但得到以下错误
Exception in thread "main" java.lang.NullPointerException
at input_output.printOutClass(input_output.java:36)
at input_output.main(input_output.java:11)我的input_output文件中的第36行如下所示
34 for(int i = 0; i < students.length; i++){
35 System.out.println("---------------------------------------");
36 students[i].getFullPrint();
37 System.out.println("");
38 }经过一些调试后,我非常确定一旦代码在迭代中运行了第36行,在该迭代中,studentsi没有调用构造函数。然而,我是java的新手,不知道如何检查变量的内存地址来查看它是否存在。我该怎么做呢?
在进阶时谢谢。
发布于 2013-06-07 08:53:31
这意味着studentsi将返回null。
尝尝这个。
for(int i = 0; i < students.length; i++){
System.out.println("---------------------------------------");
System.out.println( i + (students[i] == null));
if(students[i] != null){
students[i].getFullPrint();
}
System.out.println("");
}IDE的允许调试设置了一个断点,它应该会给你提供内存和变量状态。
发布于 2013-06-07 08:53:43
在Java中,指针称为引用。您可以避免引用尚未创建的对象,如下所示:
if (students[i] != null) {
students[i].getFullPrint();
}或者,您可以确保students[]数组中的所有对象都已创建。请注意,在Java中创建数组时,您只需创建用于保存对对象的引用的结构;而不是创建对象本身-它们需要通过调用其构造函数并为各个数组元素赋值来单独创建。
发布于 2013-06-07 08:53:11
检查引用是否等于null
if(students[i] != null) // blah blahhttps://stackoverflow.com/questions/16974563
复制相似问题