0

**这是我创建的课程的一部分

    class Student{ 
 private String name;

 private float avGrade;

 private float outstandingGrade = 82.0f;

public Student() {  }

public Student(String Name, float avg) {
    name = Name;
    avGrade = avg;
}

public String getName() {
    return name;
}
public void setName(String Name) {
    name = Name;
}

}

这是其中的主要方法和另一种方法:

    public static void main(String[] args) {
    Student[][] school = CreateStudentMat();
    school[0][0].setName("Student");
}
public static Student[][] CreateStudentMat(){
    Scanner input = new Scanner(System.in);
    System.out.println("Please enter number of classes in school: ");
    int NumClasses = input.nextInt();
    Student[][] matrix = new Student[NumClasses][];  
    for(int i = 0; i<matrix.length; i++){
        System.out.println("Please enter number of students in class " +(i+1));
        matrix[i] = new Student[input.nextInt()];
    }
    return matrix;
}

当我尝试使用 school[0][0].setName("Student"); 更改 [0][0] 处的对象名称时;

我收到一个错误

Homework3.main(Homework3.java:13) 的线程“主”java.lang.NullPointerException 中的异常

我在这里做错了什么?

4

3 回答 3

6
  • 您正在实例化二维数组matrix = new Student[NumClasses][]
  • 您正在实例化 N 一维数组matrix[i] = new Student[input.nextInt()]
  • 不是用实例化每个学生matrix[i][j] = new Student()

因此,正确创建了二维数组,但每个学生引用仍然存在null,因为您没有实例化任何。

于 2013-01-04T13:29:57.007 回答
0

没有学生对象。你从来没有new Student()在任何地方打电话。由于数组没有任何对象,因此您不能在空值上调用方法。

于 2013-01-04T13:30:13.043 回答
0

也许问题存在于:

Student[][] matrix = new Student[NumClasses][]; 

尝试初始化数组第二维的大小。

于 2013-01-04T13:30:53.967 回答