无论何时我运行以下代码,它都会给我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);
}
答案 0 :(得分:5)
keArrayList
是null
:
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);