运行 时出现空指针异常错误,但为什么呢?

Null pointer Exception erorr while running, but Why?

public class 学生 {

int[] mark ;
char[] grade;
public int[] getMark() {
    return mark;
}
public void setMark(int[] mark) {
    this.mark = mark;
}
public char[] getGrade() {
    return grade;
}
public void setGrade(char[] grade) {
    this.grade = grade;
}


public Student(int[] mark){
    this.mark=mark;
    char[] grade=new char[mark.length];
}
public void findGrade(){
    for(int i=0;i<grade.length;i++){
        if(mark[i]>=92){
            grade[i]='E';      
        }
        if(mark[i]>=85&&mark[i]<92)
            grade[i]='A';
        if(mark[i]>=70&&mark[i]<85)
            grade[i]='B';
        if(mark[i]>=65&&mark[i]<70)
            grade[i]='C';
        if(mark[i]<65)
            grade[i]='D';
    }
    
}

} public class 测试员 {

public static void main(String[] args) {
    int[] marks = { 79, 87, 97, 65, 78, 99, 66 };
    Student student = new Student(marks);
    System.out.println("Grades corresponding to the marks are : ");

    student.findGrade();
    
    char[] grades = student.getGrade();
    for (int index = 0; index < grades.length; index++) {
        System.out.print(grades[index] + " ");
    }
}

}

我不知道什么是erorr,它抛出空指针异常erorr,请解释一下!是一个数组程序,根据分数查找对应的年级!!

您初始化了错误的 'grade' 变量。检查你的构造函数:

char[] grade=new char[mark.length];

你声明的成绩是局部变量,不是你class中的全局变量。要修复它,只需使用

grade=new char[mark.length];

相反。

您正在构造函数中声明局部 grade 数组,并将指向新数组的指针分配给它。但是全局变量 grade 保持为空。

只需更换

char[] grade=new char[mark.length];

符合

 this.grade=new char[mark.length];

它会起作用。