提问人:jarvis 提问时间:1/20/2021 更新时间:1/20/2021 访问量:46
空指针异常erorr,但为什么?[复制]
Null pointer Exception erorr while running, but Why? [duplicate]
问:
公共类 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,请解释一下!这是一个根据分数找到相应成绩的数组程序!!
答:
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。grade
grade
只需将
char[] grade=new char[mark.length];
行
this.grade=new char[mark.length];
它会起作用的。
评论