在Java中填充私有内部类的数组

时间:2013-07-26 20:26:30

标签: java

所以我有这个私有的内部类如下:

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

在我尝试将这些值分配给这些变量的第一行。我有点被困在这一点,任何帮助都会受到赞赏。

4 个答案:

答案 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);