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为空数组,然后为任何其他数组从平均值(for循环下的第一行)中减去位置i的数据。然后将该值平方(for循环下的第二行)。由于方差是所有这些“temp”值的平均值,因此下面的return语句返回temp / data.length。我可以告诉我这样做错了,如果有人能给我一些提示或指出我正确的方向,那就太棒了。
答案 0 :(得分: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;
}
答案 1 :(得分: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;