我正在寫一個對象類來計算每個字母的數量,當我運行我的測試代碼時,它顯示了一個空指針異常,當「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