更改java中对象数组中的字段

And*_*ski 0 java arrays

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

    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;
}
Run Code Online (Sandbox Code Playgroud)

}

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

    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;
}
Run Code Online (Sandbox Code Playgroud)

当我试图用[0] [0] .setName("学生")更改[0] [0]处对象的名称时;

我收到一个错误

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

我在这里做错了什么?

Jac*_*ack 6

  • 你正在实例化二维数组 matrix = new Student[NumClasses][]
  • 你正在实例化N个一维数组 matrix[i] = new Student[input.nextInt()]
  • 没有实例化每个学生matrix[i][j] = new Student()

因此,二维数组被正确创建,但每个学生参考仍然是null因为您没有实例化任何.