ArrayList.add()方法导致NullPointerException异常
问题描述:
类运行时长整型引起以下错误:ArrayList.add()方法导致NullPointerException异常
Exception in thread "main" java.lang.NullPointerException
at LongInteger.breakString(LongInteger.java:38)
at LongInteger.<init>(LongInteger.java:17)
at LongInteger.main(LongInteger.java:149)
这里有一些相关类摘要:
public class LongInteger extends Object {
private ArrayList<String> storedStrings;
// Constructor
public LongInteger(String s) {
this.setInputString(s);
this.breakString(this.inputString); //Exception @ line 17
}
/**
* the purpose of this method is to break the input string into an
* ArrayList<String> where each String has a length of 9 or less.
*/
private void breakString(String s){
if(s.length()>9){
storedStrings.add(0,s.substring(s.length()-9,s.length()));
this.breakString(s.substring(0,s.length()-9));
} else {
this.storedStrings.add(0,s); //Exception @ line 38
}
}
public static void main(String[] args) {
LongInteger a = new LongInteger("12345"); //Exception @ line 149
}
}
我很茫然,以是什么导致这个NullPointerException。任何人都有建议?
答
你永远不会实例化storedStrings
。尝试改变:
private ArrayList<String> storedStrings;
要:
private ArrayList<String> storedStrings = new ArrayList<String>();
当你有行:
this.storedStrings.add(0,s);
正在调用的方法add
上实例ArrayList<String>
存储在this.storedStrings
。 new
运算符是您如何获得新事物的实例。
答
您需要在使用它之前创建storedStrings变量。
ArrayList<String> storedStrings = new ArrayList<String>();
+0
'storedStrings'已创建,它只是未初始化。 – 2012-02-16 01:42:15
“storedStrings”是否已初始化? – 2012-02-16 01:36:30