java - 如何使用 void 方法和重复方法调用计算平均值?

标签 java

我有一个 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/

相关文章:

java - 交换二维数组行

java - 如何放心地重置/删除/清除请求正文

java - 为什么我的 java 堆栈程序终止而不给出输出?

Java 不兼容类型错误 Arraylists

java - Eclipse Gradle项目突然失去依赖

java.lang.NoClassDefFoundError : com/google/inject/Module using Guice

java - 我的第一个应用程序教程 "Unfortunately My First App has stopped."

java - 如何在windows上使用java导入mysql转储文件到MySQL服务器(7)

java:显示数据库中的元素

java - kotlin/java-是否有类似TryParse()的东西?