这是我的代码:
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,但意识到这是多余的。所以我不确定我做错了什么。
答案 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
已初始化。
例如,如果实例字段gradeList
为ArrayList<Integer>
,请使用:
ArrayList<Integer> gradeList = new ArrayList<Integer>();
...在引用它之前。
答案 4 :(得分:0)
你应该添加ArrayList进行初始化。和
您应该尝试以下内容:
private List<Integer> gradeList = new ArrayList<Integer>();