2013-12-07 102 views
0

我已經創建了一個方法來計算方差,但是,我們只是說我有一個邏輯錯誤。而不是獲得方差,我得到輸出爲無窮大。計算方差我得到無窮大

見輸出:

============ DataSet Test ================================ 
10 Data Items 
[5.55, 47.9, 21.27, 6.59, 42.96, 74.3, 99.17, 50.99, 77.36, 62.76] 
Minimum: 5.55 at index 0 
Maximum: 99.17 at index 6 
Data Range: 93.62 
Median : 56.875 
Mean  : 48.885000000000005 
Variance : Infinity 
Std Dev : 0.0 

這裏是代碼:

//Return the variance of the points in this DataSet 
    public double variance() 
    { 
    double[] meanVar = this.data; 

    for (int k = 0; k < meanVar.length; k++) 
    { 
    meanVar[k] = meanVar[k] - mean(); 
    meanVar[k] = Math.pow(meanVar[k],2.0);  
    } 

    double variance = 0.0; 

    for (int k = 0; k < meanVar.length; k++) 
    variance = variance + meanVar[k]; 

    variance = variance/size(); 

    return variance; 
} 
+2

檢查size()的值,並試圖找出爲什麼這個值等於'0'。 –

+0

我檢查過,大小的值與數據數組的長度相同。只是爲了檢查我把它改爲variance = variance/meanVar.length;仍然會遇到無窮大的錯誤。 – Jason091

+0

那麼這意味着你的數組的長度爲0. –

回答

1

什麼是size()variance()方法return之前吧?

也許你的意思是meanVar.length那裏。

+0

如果我將它改變爲meanVar.length – Jason091

+0

@ Jason091,我仍然會得到無窮大你將真正學會如何調試你的程序。只需在每一步打印出所有變量('if','else',''迭代等)。然後你就可以看到現在發生了什麼,因爲現在它只是猜測。 – skiwi