繁体   English   中英

如何仅计算输入值的数组平均值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM