因此,我有一种方法可以循环遍历并自动返回这些数字:
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