我正在写一个对象类来计算每个字母的数量,当我运行我的测试代码时,它显示了一个空指针异常,当“abc”被传递时,我不知道为什么。测试代码没有错误,但是在我的对象类中存在一些错误。我该如何解决这个特定的空指针异常
public class LetterInventory {
private static final int COUNTER = 26;
private int size = 0;
private int[] inventory;
public LetterInventory() {
inventory = new int [COUNTER];
}
public LetterInventory (String data) {
data = data.toLowerCase();
for(int i = 0; i < data.length(); i++) {
int charPosition = data.charAt(i) - 'a';
if(charPosition >= 0 && charPosition < COUNTER) {
inventory[charPosition]++;
size++;
}
}
}
的解决方法是对所有NPE是相同的:找出什么是零,并将其分配给一个非空引用。堆栈跟踪会告诉您生成该文件的文件中的行号。这不是一个足够好的提示吗? – duffymo 2015-01-09 20:18:15
NPE在哪里? – 2015-01-09 20:18:53
那么,在一个构造函数中初始化'inventory'并且在另一个构造函数中使用它并不是很聪明。你不能同时调用两者,所以你不能计算任何东西,或者库存仍然是空值。 – Tom 2015-01-09 20:22:12