java - 如何在双数组中找到非零数?
问题描述
如果我有这样的双数组:
[0.0,12.0.0,0.0,0.0,0.0,6.0,5.0,0.0]
而且我会计算仅不是 0.0 数字的平均值,为什么这段代码不能正常工作?
public static double Average(double[] myarray) throws IllegalArgumentException {
double dValue = 0.0;
int counter=1;
if (myarray== null) {
throw new IllegalArgumentException("The array must be defined or diferent to null");
}
if (myarray.length == 0) {
throw new IllegalArgumentException("The array must have size greater than zero");
}
for(int i = 0 ; i < myarray.length ; i++) {
if(myarray[i] > 0.0){
counter++;
dValue += myarray[i]/counter;
}
}
return dValue;
}
解决方案
在循环之后除以counter
,而不是在其中。
实际上,您必须始终除以最终计数器值减去一(不是递增值),这在循环期间是不可能的。