这是初始化对象数组的正确方法吗?

时间:2016-10-13 20:42:55

标签: java arrays object nullpointerexception

public class HelloWorld{


class Student {
int marks;

}


public static void main(String []args){

Student studentArray[] = new Student[2];
studentArray[0].marks = 100;
studentArray[1].marks = 75;

int m=0;
m = studentArray[0].marks;

System.out.println(m);


    }
}

这编译没有问题但是当我执行它时,我得到空指针异常错误如下:

  

线程中的异常" main" .lang.NullPointerException at   HelloWorld.main(HelloWorld.java:13)

有人可以帮我找到原因吗?

3 个答案:

答案 0 :(得分:3)

您创建了一个大小为2的数组,该数组被指定用于保存带有Student studentArray[] = new Student[2];的Student对象,因此现在您有一个空容器。然后,您尝试访问该空容器的元素,该元素抛出空指针异常。您需要将Student对象放入Student容器中以访问容器元素。

答案 1 :(得分:0)

这样的东西就是你要找的东西:

public class HelloWorld{


class Student {
    int marks;
}


public static void main(String []args){

        Student studentArray[] = new Student[2];
        studentArray[0] = new Student(); // .marks = 100;
        studentArray[1] = new Student(); // .marks = 75;
        studentArray[0].marks = 100;
        studentArray[1].marks = 75;

        int m=0;
        m = studentArray[0].marks;

        System.out.println(m);
    }
}

答案 2 :(得分:0)

public class HelloWorld{

public static void main(String []args){

        Student studentArray[] = new Student[2];
        HelloWorld helloWorld = new HelloWorld();

        for(int i=0; i<studentArray.length; i++) {
            studentArray[i] = helloWorld.new Student();
        }

        studentArray[0].marks = 100;
        studentArray[1].marks = 75;

        int m=0;
        m = studentArray[0].marks;

        System.out.println(m);
    }

class Student {
    int marks;
}

}

您收到NullPointerException,因为您尚未在studentArray中初始化Student对象。然后,您尝试访问不存在的错误。

以上代码应该可以解决您的错误。