所以我有这个私有的内部类如下:
private class Exam{
private String course;
private double score;
public Exam(String course, double score){
this.course = course;
this.score = score;
}
public String toString(){
return String.format("%-25s: %1.2f", course, score);
}
}
我已经将此实例创建为数组
private Exam[] preliminaryExams = new Exam[6];
我没有创建这个类,它是java学习教程的一部分,我很难填充数组本身。我一直试图做的是给分数和课程变量赋值,如下:
preliminaryExams[0].score = some double;
preliminaryExams[0].course = some string;
编译很好,但是当我尝试使用这些类和方法实际执行某些代码时,我得到了
Exception in thread "main" java.lang.NullPointerException
在我尝试将这些值分配给这些变量的第一行。我有点被困在这一点,任何帮助都会受到赞赏。
答案 0 :(得分:5)
创建Exam
数组后,数组中的每个条目仍然指向null
。在Exam
实例上启动设置属性之前,您需要创建Exam
的实例,并在阵列中对其进行协商。
for (int i = 0; i < 6; i++) {
preliminaryExams[i] = new Exam (someCourse, someScore);
}
答案 1 :(得分:2)
创建数组后,每个Exam
元素都指向null。所以你必须明确地实例化它们中的每一个。你可以做到以下几点。
for (Exam exam : preliminaryExams){
exam=new Exam(someString,someDouble);
}
答案 2 :(得分:0)
似乎你没有初始化数组元素,下面的行是设置数组元素的得分字段,而不是元素本身
preliminaryExams[0].score = some double;
确保已将元素初始化为
preliminaryExams[0] = new Exam(some course, some double);//call appropriate constructor here
在设置得分变量之前(一般的初步测试的任何字段/方法)
答案 3 :(得分:0)
您实例化Exam
数组,但包含的每个元素仍为null
,因此您必须显式实例化它们。
由于你有一个Exam
构造函数,我不明白为什么你不使用它:
private Exam[] preliminaryExams = new Exam[6];
preliminaryExams[0] = new Exam(some course, some double);