平均一个方法的多个结果?

时间:2014-10-09 10:03:05

标签: java methods average

所以,我有一个循环的方法并自动返回这些数字:

6527.6    6755.6    7009.9    7384.7    7775.9    8170.7    8382.6    8598.8    8867.6    9208.2    9531.8    9821.7   10041.6   10007.2    9847.0   10036.3   10263.5   10449.7   10699.7

我想将第一个数字平均为第二个数字,将第二个数字平均为第三个数字,依此类推。我该怎样做才能做到这一点?将所有这些双打添加到数组中?或者有没有办法获得一个运行总计来做到这一点?

我遇到的问题是,我似乎只能获得所有这些双打,或者没有这些双打,而不是特定的双打。

因此输出结果将是(6527.6 + 6755.6)/ 2,(6755.6 + 7009.9)/ 2,等等。只打印它们,没有别的。

编辑:解析器中的代码:http://pastebin.com/V6yvntcP

2 个答案:

答案 0 :(得分:1)

您所描述的内容称为移动平均值。 这里有一些正式的解释:

http://en.wikipedia.org/wiki/Moving_average

[...]简单移动平均线(SMA)是前n个数据的未加权平均值[...]

您想计算 n = 2 的移动平均线。

以下是执行此操作的简单代码:

public static void main(String[] args) {
    List<Double> list = Arrays.asList(6527.6, 6755.6, 7009.9, 7384.7, 7775.9, 8170.7);

    for (int i = 1; i < list.size(); i++) {
        double avg = (list.get(i) + list.get(i - 1)) / 2;
        System.out.println("avg(" + (i - 1) + "," + i + ") = " + avg);
    }
}

没有List或数组的第二种方法:

Double prev = null;

// inside loop:

double curr = getMethodResult(...);

if (prev != null) {
    double avg = (curr + prev) / 2;
}

prev = curr;

// end of loop

答案 1 :(得分:0)

创建double数组,然后执行一些遍历和交换。看看:

  double[] array = { 6527.6, 6755.6, 7009.9, 7384.7, 7775.9, 8170.7 };
        double avg = 0;
        double sum = 0.0;
        double temp = 6527.6;
        for (int i = 0; i < array.length - 1; i++) {
            sum = temp + array[i + 1];
            avg = sum / 2;
            System.out.println("(" + temp + "+" + array[i + 1] + ")/2" + "= "
                    + avg);
            temp = avg;

        }