调用“add”时ArrayList的NullPointerException?

时间:2011-12-15 07:37:42

标签: java exception arraylist nullpointerexception

无论何时我运行以下代码,它都会给我NullPointerException.虽然我检查是否为null然后添加,但仍然给出了这个eception. file是纯文本(.txt) 什么可能是错的?

BufferedReader  br2 = new BufferedReader(new FileReader(file));
ArrayList<String> keArrayList=null;
for(int i=0;br2.readLine()!=null;i++)
{
  String  letter= br2.readLine();
  if (letter!=null)
    keArrayList.add(i,letter);
}

5 个答案:

答案 0 :(得分:5)

keArrayListnull

ArrayList<String> keArrayList=null;

更改为:

List<String> keArrayList=new ArrayList<String>();

答案 1 :(得分:2)

你已经在循环之前将keArrayList设置为null。

答案 2 :(得分:2)

好吧,你还没有在第一个地方创建任何实例的ArrayList。 ArrayList<String> keArrayList只是真实ArrayList<String>对象的字段(占位符)。因此,您只需将该行更改为:

ArrayList<String> keArrayList = new ArrayList<String>();

现在您正在创建一个真实的ArrayList对象并将其存储在该字段中。

您可以在此处阅读更多内容:

答案 3 :(得分:2)

你刚刚声明了你必须实例化的对象并初始化它。

声明:以粗体设置的代码是将变量名称与对象类型相关联的所有变量声明。

实例化: new关键字是一个创建对象的Java运算符。

初始化:新运算符之后是对构造函数的调用,该构造函数初始化新对象。

请阅读here

答案 4 :(得分:1)

您必须检查堆栈跟踪以了解NullPointerException的确切位置。您正在为'letter'检查null,但是您是否正在检查keArrayList ?? NO,这就是您在keArrayList.add(i,letter);

获取异常的原因