空指针异常erorr,但为什么?[复制]

Null pointer Exception erorr while running, but Why? [duplicate]

提问人:jarvis 提问时间:1/20/2021 更新时间:1/20/2021 访问量:46

问:

公共类 Student {

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 Tester {

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,请解释一下!这是一个根据分数找到相应成绩的数组程序!!

Java 数组异常 null nullreferenceexception

评论

2赞 1/20/2021
这回答了你的问题吗?什么是 NullPointerException,如何修复它?
0赞 Mark Meuer 1/20/2021
异常应包含发生异常的行号。这是什么线?
0赞 NomadMaker 1/20/2021
在 findGrade() 中,for 循环应受 mark.length 而不是 grade.length 的限制。

答:

1赞 user10992464 1/20/2021 #1

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

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

您声明的成绩是局部变量,而不是班级中的全局变量。要修复它,只需使用

grade=new char[mark.length];

相反。

2赞 Mamuka Sakhelashvili 1/20/2021 #2

您正在构造函数中声明本地数组,并将指向新数组的指针分配给它。但全局变量保持 null。gradegrade

只需将

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

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

它会起作用的。