我有一個void方法,它接受一個整數,以便它可以將存儲在類對象中的值更新爲平均值。這裏的自負是每次我調用這個方法時,它必須更新方法中存儲的和,然後重新平均它。問題是前兩個JUnit測試我運行檢查一個和兩個調用工作正常,但第三個錯誤計算。我確信這是因爲它只是取第三個值並將其加到先前的平均值而不是總和中,但我不確定如何調和這一點並完全陷入困境。有沒有更合適的方法來做到這一點,而不是將參數傳遞給ArrayList?因爲我很新,所以我可能會錯過一些明顯的東西。如何使用void方法和重複的方法調用來計算平均值?
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;
}
快速照顧你可能只是將'this.mean'設置爲由this.numValues分割。你也可以在每個方法調用上創建一個新的'ArrayList',也許是本地化的? –
是的,這是一個相當混亂。沒有填補陣列可能的誤報可能沒有幫助。使valueList成爲一個實例變量,併爲每個變量固定冗餘。也刪除了numValues,我只是將值除以valueList.size(),因爲它看起來更簡潔。謝謝,所有! – jt90133