[英]How to calculate average of an array for only entered values
我正在尝试仅计算非 0 值的数组平均值。我的数组大小为 15,因为它最多可以包含 15 个值。
当我计算平均值时,它使用所有 15 个值,即使其中 12 个在开始时为 0。 如何防止 0.0 被考虑?
for(double element: majorA) {
Sum += element;
}
average = sum / majorA.length;
System.out.printf("%.5f\n", average);
该数组也不是一个定义的集合,而是取决于用户输入的内容。 初始数组为:
double[] majorA = new double[15];
然后根据需要获取值:
majorA[0] = num1;
majorA[1] = num2;
...
我只想添加一个计数器来跟踪并使用它而不是数组长度。
int count = 0;
for(double element: majorA) {
if(element > 0.0) {
Sum += element;
count += 1;
}
}
average = sum / count;
System.out.printf("%.5f\n", average);
你可以在一行中完成
Arrays.stream(majorA).filter(d -> d != 0).average().orElse(0)
这将过滤掉所有为 0 的值并计算平均值。 由于.orElse(0)
即使数组中没有任何剩余内容也会显示 0
您可以在循环中使用计数器,该计数器仅在数字 !=0 时才会增加
int count = 0;
for(double element: majorA) {
if(element != 0.0){
sum += element;
count++;
}
}
average = (count == 0) ? 0 : sum / count;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.