java - 从 ArrayList 获取双打的平均值
问题描述
我正在创建一个程序,该程序将双精度数存储在一个数组中,然后将每个数组存储在一个 ArrayList 中,然后计算该 ArrayList 的平均值,但我不断得到“从 double 到 int 的可能有损转换”。在第 5 行。
我是 java 新手,所以我可能正在监督一个简单的修复。
public static double calculateAll(List<double[]> allNumbers) {
double average = 0.0;
double total = 0.0;
for(int i = 0; i < allNumbers.size(); i++) {
total += allNumbers.get(i);
}
average = total/allNumbers.size();
return average;
}
解决方案
我不确定您在问题中要问什么,但我认为这就是您要寻找的。
public static double calculateAll(List<Double> allNumbers) {
double average;
double total = 0.0;
for (Double allNumber : allNumbers) {
total += allNumber;
}
average = total / allNumbers.size();
return average;
}
您将数组存储在集合中。所以我改变了这一点,Double
注意它double
是原生的,而Double
不是原生的。你不能double
在一个集合中。然后我将for
循环转换为foreach
循环
这是调用此代码的方法。
public static void main(String[] args) {
List<Double> doubles = new ArrayList<>();
doubles.add(0.1);
doubles.add(4.1);
double wat = calculateAll(doubles);
System.out.println(wat);
}
因此,让我们记下我们所做的所有更改。
List<double[]>
已替换为List<Double>
。
List
现在拥有实例项目Double
for(int i = 0; i < allNumbers.size(); i++)
改为for (Double allNumber : allNumbers)
这只是一个基本的 for-each 循环。
老实说,我会为此使用 java 8,我们可以在 1 行中做到这一点!
public static double calculateAll(List<Double> allNumbers) {
return allNumbers.stream().mapToDouble(e -> e / allNumbers.size()).sum();
}
推荐阅读
- reporting-services - SSRS 级联过滤器无法正常工作
- ios - 可以使用启动故事板吗?
- sql-server - SQL Server 等效的 MySql %w 日期格式参数
- sql-server - 如何有条件地检查带有可变数据的 AES_256 算法数据的对称加密
- python - SciPy ODE 求解器存在离散事件问题
- java - 将 boolean[] 转换为 boolean
- c++ - 无法通过空格将文本文件行分隔到向量中
- java - SetText 从其他窗口 javafx 到 textfiled 或 lable
- java - ArrayList 的 Java 序列化/反序列化仅适用于第一次程序执行
- scala - Scala:如何只保留包含完整点列表的路径