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中所有元素的平均值 (也不太确定我的第一行是否正确)
答案 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;
}