2013-10-23 49 views
0

我正在爲我的數據結構類編寫代碼。我的代碼由5個類組成,這些類共同創建一個由100個隨機整數組成的數組,從0到100之間選取各種統計信息,並生成與正態分佈相比的標準偏差。很顯然,我的計算標準差法是與東西給空指針錯誤:HW:Java程序生成NullPointerException錯誤消息

Exception in thread "main" java.lang.NullPointerException 
at UnorderedArrayList.standardDeviation(UnorderedArrayList.java:113) 
at ValueList.main(ValueList.java:53) 

的代碼片段是

IntElement shortList = (IntElement) (this.list[i]); 
int num = shortList.getNum(); 
d = num - average; 
var += Math.pow((double) d,(double) 2); 

的錯誤ID行113:

int num = shortList.getNum(); 

getNum似乎在程序中的其他地方正常工作。

我已經花了幾個小時與私人導師一起工作,我已經問過我的教授的建議,但我不能確定這個錯誤的原因。有沒有人有什麼建議?

回答

4

這很明顯,this.list[i]返回null,所以你應該檢查該索引下的元素是否真的設置。如果您有類似

IntElement[] array = new IntElement[100]; 
array[0] = new IntElement(); 

然後將除了array[0]元素的其餘部分將是空的,所以你可能有你的指數太高。

2
IntElement shortList = (IntElement) (this.list[i]); 
int num = shortList.getNum(); 

這裏您shortList爲空,這意味着存在於listi個位置的元素爲null。

1

我同意上面給出的答案,只是爲了增加它,總是建議在這種情況之前進行空檢查。

IntElement shortList = (IntElement) (this.list[i]); 
int num = 0; 
if (shortList !=null) { 
    num = shortList.getNum(); 
} else { 
    System.out.println("No items returned"); //or log it. 
}