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

时间:2020-10-06 14:54:54

标签: java arrays

我正在尝试仅为不为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;
...

3 个答案:

答案 0 :(得分:2)

我只添加一个跟踪并使用它的计数器,而不是数组长度。

int count = 0;
for(double element: majorA) {
   if(element > 0.0) {
       Sum += element;
       count += 1;
   }
}
average = sum / count;
System.out.printf("%.5f\n", average);

答案 1 :(得分:1)

您可以使用

illegal inheritance; 
<$anon: Int => scala.collection.mutable.Set[String] 
with scala.collection.MultiDict[Int,String]> inherits different type instances of trait Iterable:
Iterable[(Int, String)] and Iterable[(Int, scala.collection.mutable.Set[String])]

这将过滤掉所有为0的值并计算平均值。即使由于Arrays.stream(majorA).filter(d -> d != 0).average().orElse(0)

,即使数组中没有任何内容,也将显示0。

答案 2 :(得分:0)

您可以在循环中使用一个仅在数字!= 0时递增的计数器

int count = 0;
for(double element: majorA) {
   if(element != 0.0){
       sum += element;
       count++;
   }
}
average = (count == 0) ? 0 : sum / count;