ArrayList中的元素平均值

时间:2018-03-16 08:57:32

标签: java

public static int averageInArrayList(ArrayList <Integer> arrayList) {
    Integer sum = 0;
    if(!ArrayList.isEmpty()) {
        for (Integer sum : ArrayList) {
            sum += ArrayList;
        }
        double total = sum.doubleValue() / ArrayList.size();
    }
    return total;
}

您好我无法返回Arraylist中所有元素的平均值 (也不太确定我的第一行是否正确)

6 个答案:

答案 0 :(得分:2)

为什么不使用lambda方式?

Months  Retention_Rate  Customer_Count
0   2008/01        0.145916             133
1   2008/02        0.924663             762
2   2008/03        0.074544              67
3   2008/07        0.000000               0
4   2008/08        0.000000               0
5   2008/09        0.000000               0
6   2008/10        0.000000               0
7   2008/11        0.000000               0
8   2014/01        0.000000               0
9   2014/02        0.000000               0
10  2014/03        0.000000               0
11  2014/07        0.058684              45
12  2014/08        0.069786              61
13  2014/09        0.076130              64
14  2014/10        0.061856              60
15  2014/11        0.082474              69

作为一种方法:

List<Integer> testList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

double intAverage = testList.stream()
    .mapToInt(Integer::intValue)
    .average()
    .orElse(0.0);

System.out.println(intAverage);

答案 1 :(得分:1)

您必须在条件范围之外声明double total,否则它将无法使用。把它放在sum下面一行。此外,您必须将退货类型更改为double,因为您不再返回int

答案 2 :(得分:1)

Java 8

public static double calculateAverage(List<Integer> list) {
    return list
            .stream()
            .mapToInt(number -> number)
            .average().getAsDouble();
}

答案 3 :(得分:0)

private double calculateAverage(List <Integer> marks) {
  Integer sum = 0;
  if(!marks.isEmpty()) {
    for (Integer mark : marks) {
        sum += mark;
    }
    return sum.doubleValue() / marks.size();
  }
  return sum;
}

答案 4 :(得分:0)

只需将您的返回类型更改为Double(平均值不是整数)并将您的流更改为DoubleStream以进行有效计算:

public static double averageInArrayList(ArrayList <Integer> arrayList) {
    return arrayList
            .stream()
            .mapToDouble(Integer::doubleValue)
            .average()
            .orElse(0.0D);
}

答案 5 :(得分:-1)

只需改变三行,你就可以了。

public static double averageInArrayList(List <Integer> ArrayList) { //line 1
    Integer sum = 0;
    if(!ArrayList.isEmpty()) {
        for (Integer element: ArrayList) {  //line 2
            sum += element;                 //line 3
        }
        double total = sum.doubleValue() / ArrayList.size();
    }
    return total;
}