我有一个用于创建平均值的ArrayList以便在图形上绘制的函数,
public void setupAverageEntries(int everyNthTimeStamp){
this.avgEntries = new ArrayList<GraphEntry>();
for (int i = 0; i < data.getTimeStampData().size() - everyNthTimeStamp; i += everyNthTimeStamp) {
int avgVolume = new Integer(0);
int total = new Integer(0);
for (int j = 0; j < i + everyNthTimeStamp; j ++) {
total += data.getVolumeData().get(j);
}
avgVolume = total / everyNthTimeStamp; // get the average volume over a certain amount of time stamps
System.out.println("TOTAL " + total);
System.out.println("AVG " + avgVolume);
Point p = new Point(i + everyNthTimeStamp / 2, avgVolume); // plot a point with the average volume and in the middle of the NthTimeStamp
GraphEntry avgE = new GraphEntry(p, avgVolume, i + everyNthTimeStamp / 2);
this.avgEntries.add(avgE);
}
}
我本以为在第一个循环中将“总计”初始化为0意味着它将在第二个循环完成后使用它计算“ avgVolume”来重置,但是它产生的输出告诉我,总计仅曾经增加。我认为这可能是一个参考问题,但是即使在声明了“ total”和“ avgVolume”为新值之后,total仍然永远不会重置。
请帮助!是范围相关的问题吗?希望我不只是一个盲人蝙蝠...
答案 0 :(得分:0)
我认为它已正确重置,但是在内部循环中,您总是对相同的数据进行迭代,在内部循环的每次运行中都比以前循环得更远。因此,总和总是比上一次迭代大。
我没有进一步分析您的代码,但我想内部循环应该从i而不是0开始。