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 循环下的第一行)。然后将该值平方(for 循环下的第二行)。由于方差是所有这些“temp”值的平均值,因此下面的 return 语句返回 temp / data.length。我可以说我做错了,如果有人能给我一些提示或指出我正确的方向,那就太棒了。

4

2 回答 2

1

您需要将 return 移出循环语句。

public double variance() {
if (data.length == 0) {
    return Double.NaN;
} 

double variance = 0;
for (int i = 0; i < data.length; i++) {
    double temp = average() - data[i];
    variance += Math.pow(temp, 2);
}

return variance/data.length;
}
于 2018-12-09T06:39:25.733 回答
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 回答