因此,我有一种方法可以循环遍历并自动返回这些数字:

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

最佳答案

您所描述的称为移动平均线。
一些正式的解释在这里:

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);
    }
}


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

Double prev = null;

// inside loop:

double curr = getMethodResult(...);

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

prev = curr;

// end of loop

08-04 00:47
查看更多