从ArrayList获取平均双精度

时间:2018-12-10 22:01:54

标签: java arrays 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;
}

1 个答案:

答案 0 :(得分:0)

我不确定您要问的是什么,但是我认为这就是您要寻找的。

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();
}