2014-03-24 47 views
0

的方法时,遇到了一个N​​ullPointerException这是我的代码:创造,增加了一个ArrayList

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,但意识到这是多余的。所以我不确定我做错了什么。

+1

已'gradeList'被初始化? – Mena

+0

你在哪里启动private ArrayList gradeList;? –

回答

2

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

可以初始化这样的:

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

你永远instanitating ArrayList中。尝试

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

这很可能是原因,但是'private ArrayList gradeList;'是通过RKC的编辑添加到OP的代码中的...... – Balder

+0

好的 - 我将更新我的答案以反映OP的问题的更改 – DaveH

+1

I'一个白痴。我在我的构造函数中初始化了ArrayList,它修复了它。但是现在我得到了一个不同的错误,一个“OutOfMemoryError”仍然指向同一行。我的循环或扫描仪有问题吗? – user3430421

1

好像你不初始化gradeList。

内联初始化:

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

或者在构造函数中:

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

确保您ArrayList被初始化。

例如用一个实例字段作为gradeListArrayList<Integer>,用途:

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

...引用它。

0

你应该必须添加ArrayList被初始化。和

你应该试试这个下面为:

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