我有一个 void 方法,它接受一个整数,这样它就可以将存储在类对象中的值更新为平均值。这里的自负是每次我调用这个方法时,它必须更新存储在方法中的总和,然后重新平均。问题是我运行的前两个 JUnit 测试检查一个和两个调用工作正常,但第三个计算错误。我确定这是因为它只是取第三个值并将其添加到之前的平均值而不是总和,但我不确定如何调和这一点并且完全被难住了。有没有比将参数传递到 ArrayList 更合适的方法来执行此操作?由于我是新手,所以我可能遗漏了一些明显的东西。
public void getAverage(int value) {
ArrayList<Integer> valueList = new valueList<Integer>();
valueList.add(value);
int sum = this.mean; //instance variable that must hold average
for (int val : valueList) {
sum += val;
this.mean = sum;
this.numValues++; //instance variable for how many entries
}
sum = this.mean / this.numValues;
this.mean = sum;
}
最佳答案
这是因为您的 valueList
是一个局部变量,并且在每次方法调用时都是新创建的,因此它只会保存 1 个值,这是您的 value
而不是全部以前的方法调用值。
要解决此问题,请将您的 valueList
作为实例变量移至该类。
关于java - 如何使用 void 方法和重复方法调用计算平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30794578/