簡體   English   中英

計算Java中的平均數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM