[英]Calculate average number in Java
以下是時間序列數據的示例:
time - 3 sec, value - 6
time - 10 sec, value - 7
time - 12 sec, value - 8
time - 17 sec, value - 9
time - 28 sec, value - 93
time - 29 sec, value - 94
我想計算最近30秒的平均值。 是否有任何簡單的標准算法? 也很高興看到與Java實現的鏈接
我(和一個朋友)寫了一個計算平均值的代碼:
package dingen;
import java.util.Scanner;
public class Gemiddelde {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
float maxCount = 0;
float avgCount = 0;
System.out.println("How many numbers do you want");
int n = sc.nextInt();
for(int i = 0; i < n; i++) {
System.out.println("Number: ");
float number = sc.nextInt();
maxCount = maxCount + number;
}
avgCount = maxCount / n;
System.out.println("maxCount = " + maxCount);
System.out.println("avgCount = " + avgCount);
}
}
唯一要做的就是替換您的類和包。
您將收到消息: How many numbers do you want?:
然后它會問您插入的號碼數量。
例:
您要多少個號碼?:6
數量:6
數量:7
數量:8
編號:9
數量:93
數:94
maxCount = 217.0
avgCount = 36.166668
我希望我能幫助您解決您的問題:)
我會使用TreeMap<Integer, Integer>
,鍵是秒,值是你的值;)
TreeMap
具有有用的方法,例如lastKey()
和tailMap()
,它們適合您的用例:
TreeMap<Integer, Integer> map = new TreeMap<>();
// add all your entries
Integer lastSecond = map.lastKey(); // returns the highest key
Integer thirtySecondsAgo = lastSecond - 30;
SortedMap<Integer, Integer> range = map.tailMap(thirtySecondsAgo);
int count = 0;
int sum = 0;
for (Integer value : range.values()) {
sum += value;
count++;
}
double average = (double) sum / (double) count;
tailMap()
文件:
返回此地圖的一部分的視圖,其鍵大於或等於
fromKey
對於您的問題, fromKey
將為thirtySecondsAgo
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.