在创建添加到ArrayList的方法时获取NullPointerException

时间:2014-03-24 13:16:42

标签: java arraylist nullpointerexception

这是我的代码:

private ArrayList<Integer> gradeList;  

public void addGrades(Scanner reader) {
        int grade = reader.nextInt();
        if (grade != -1) {
            this.gradeList.add(grade); // --> NullPointerException
        }
    }

我无法弄清楚为什么我会得到一个NullPointerException,因为我已经制作了这样的方法而且没有这个问题。我想把它改成这个:

 public void addGrades(Scanner reader) {
        int grade = Integer.parseInt(reader.nextLine());
        while (true) {
            if (grade == -1) {
                break;
            } else {
                this.gradeList.add(grade); // --> NullPointerException
            }
        }
    }

会有所帮助,但它没有解决问题。在这两种情况下,问题都在this.gradeList.add(grade)行。我也尝试在循环之前声明ArrayList在方法中为null,但意识到这是多余的。所以我不确定我做错了什么。

5 个答案:

答案 0 :(得分:5)

你永远不会实行arraylist。尝试

private ArrayList<Integer> gradeList = new ArrayList<Integer>();

答案 1 :(得分:2)

gradeList必须为null。确保在使用之前对其进行初始化。

可以像这样初始化:

private ArrayList<Integer> gradeList = new ArrayList<Integer>();

答案 2 :(得分:1)

好像你没有初始化gradeList。

将其内联初始化:

private ArrayList<Integer> gradeList = new ArrayList<Integer>();

或者在构造函数中:

public MyClass() {
    gradeList = new ArrayList<Integer>();
    // ...
}

答案 3 :(得分:1)

确保您的ArrayList已初始化。

例如,如果实例字段gradeListArrayList<Integer>,请使用:

ArrayList<Integer> gradeList = new ArrayList<Integer>();

...在引用它之前。

答案 4 :(得分:0)

你应该添加ArrayList进行初始化。和

您应该尝试以下内容:

private List<Integer> gradeList = new ArrayList<Integer>();