0
public double variance() {
    if (data.length == 0) {
        return Double.NaN;
    } else {
        for (int i = 0; i < data.length; i++) {
            double temp = average() - data[i];
            Math.pow(temp, 2);
            return temp / data.length;
        }
    }   
}

これは、私のプログラム Stat のコード スニペットです。私はEclipseでコーディングしていますが、returnステートメントを追加するだけでなく、forループのi ++が「デッドコード」であることを教えてくれます(この用語に遭遇したのはこれが初めてです)。基本的に私がやろうとしているのは、空の配列に対して Double.NaN を返し、他の配列に対して位置 i のデータを平均から減算することです (for ループの下の最初の行)。次に、この値を 2 乗します (for ループの下の 2 行目)。分散はこれらすべての「temp」値の平均であるため、下の return ステートメントは temp / data.length を返します。誰かが私にいくつかのヒントを与えたり、正しい方向に私を向けたりすることができれば、私はこれが間違っていると言えます。

4

2 に答える 2

0

for ループに入ると、毎回最初の反復で値が返されるため、これはデッド コードです。したがって、ステートメントi++は実行されないため役に立ちません。

それ以外の場合は、次のようになります。

double temp = 0;
for (int i = 0; i < data.length; i++) {
    temp += average() - data[i];
    temp = Math.pow(temp, 2); //Math.pow returns a double so you have to assign it to temp
}
return temp/data.length; 
于 2013-11-09T21:46:50.177 に答える