用Java计算平均数

时间:2014-10-27 15:22:21

标签: java time-series

以下是时间序列数据的示例:

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实现的链接

2 个答案:

答案 0 :(得分:1)

我(和朋友一起)写了一个计算平均数的代码:

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

我希望我帮助你解决问题:)

答案 1 :(得分:0)

我使用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() docs:

  

返回此地图的部分视图,其键大于或等于fromKey

对于您的问题,fromKey将为thirtySecondsAgo