我正在创建一个程序,该程序在数组中存储双精度数,然后将每个数组存储在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;
}
答案 0 :(得分:0)
我不确定您要问的是什么,但是我认为这就是您要寻找的。 p>
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();
}