簡體   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