java - 我需要更改此函数以计算正确的平均值吗?
问题描述
我对 Java 很陌生,我正在尝试创建一个类Average
,其对象计算可以首先通过该addNumber
方法添加到其中的多个整数(另一个类 Integers 的对象)的平均值。
我可以看到正确的数字被添加到对象中并且计数器也可以正常工作,但我似乎无法弄清楚如何计算总和,ArrayList
以便我可以通过除法计算这些数字的平均值我的柜台总和。
对于此处的这一行,我不断收到 Integer 无法转换为 int 的错误消息:
for (int i : variables)
这是有道理的,但到目前为止,我尝试将其转换为一种的方法似乎都不起作用。我实际上从这里( https://coderanch.com/t/673671/java/correctly-Sum-contents-ArrayList-Integer )复制了那一行代码,但对我来说这似乎不起作用。我还需要进口什么import java.util.*;
吗?
public class Average
{
// Ints given by the user
private ArrayList<Integer> variables;
private int count = 0;
private int sum;
// Resulting average
private int average;
/**
* When creating object, takes numbers from class Integer
*/
public Average()
{
variables = new ArrayList<Integer>();
}
/**
* Add variables to calculate averages from
*/
public void addNumber(Integer newNumber)
{
variables.add(newNumber);
count ++;
}
/**
* Method to calculate the average of the given variables
*/
public int calcAverage(ArrayList<Integer> variables)
{
for (int i : variables)
{
sum += i;
}
return sum;
average = sum / count;
}
}
解决方案
您在此处共享的代码存在一些问题。
首先,从 API 的角度来看,如果类有数据成员,为什么calcAverage
要把 anArrayList<Inetger>
作为参数?variables
这样的方法应该或者不static
带参数并计算成员的平均值。
其次,从编码的角度来看,它返回了sum
赋值之前的平均值,使该行average = sum / count
代码无法访问,并导致编译错误。
第三,从数学的角度来看,由于sum
和count
是int
s,它们的除法将作为整数除法执行,在大多数情况下会给出错误的结果。
最后,Average
该类没有任何访问方法来检索添加到它的数字,或者修改方法来修改这个列表,而不是添加数字到它。考虑到这个 API,保存一个数字列表可能是多余的。相反,您可以只保留要添加的数字的sum
和count
,并根据需要返回它们的平均值:
public class Average {
private int count = 0;
private int sum = 0;
/**
* Add variables to calculate averages from
*/
public void addNumber(int newNumber) {
sum += newNumber;
count++;
}
/**
* Method to calculate the average of the given variables
*/
public double calcAverage() {
return ((double) sum) / count;
}
}
推荐阅读
- hashicorp-vault - 如何读取具有访问器的令牌值
- azure - jupyterhub 新用户的默认示例文件和文件夹太多
- python - 如何在外面使用 Django ORM 而不会出现问题?
- python - 无法连接到 MySQL 服务器,无法连接,因为 tared 机器主动拒绝它
- hadoop - HDFS Namenode 高可用性
- sql - 删除mysql中的最后n行
- feathersjs - 我如何使它成为一个异步钩子?
- bash - 带有标签的谷歌浏览器打开网址
- mysql - 如何获得返回地图的正确简单 Spring 数据 JPA 查询?
- php - Symfony 4 - 具有类类型提示的参数的默认值只能为 NULL