1054 求平均值 java
时间: 2025-04-26 21:12:15 浏览: 25
### 如何在 Java 中计算平均值
#### 使用基本方法
对于简单的数值列表,可以采用遍历累加的方式计算平均值。创建一个变量用于存储总和以及另一个计数器记录元素数量,在循环结束之后除以元素总数即可得到平均值[^4]。
```java
import java.util.Scanner;
public class AverageCalculation {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
double sum = 0;
int count = 0;
while (scanner.hasNextDouble()) {
double value = scanner.nextDouble();
count++;
sum += value;
System.out.println("已输入第" + count + "个数据,当前累计:" + sum );
}
if(count != 0){
System.out.println(count + "个数的平均数为:" + (sum / count));
}else{
System.out.println("未接收到任何有效数字");
}
scanner.close();
}
}
```
#### 利用 Stream API 进行简化
自 Java 8 起引入了强大的流式编程接口——Stream API,这使得许多集合操作变得更加直观简洁。当面对 `List<Double>` 或其他类型的集合时,可以直接调用 stream 方法链实现快速求解平均值的操作[^1]。
```java
import java.util.Arrays;
import java.util.List;
public class StreamAverageExample {
private static List<Double> numbers = Arrays.asList(7.5, 9.3, 6.2);
public static void main(String[] args) {
double average = numbers.stream()
.mapToDouble(Double::doubleValue)
.average()
.orElseThrow(() -> new ArithmeticException("Empty list"));
System.out.printf("The average is %.2f%n", average);
}
}
```
#### 处理复杂的数据结构
如果遇到更复杂的场景比如包含 BigDecimal 类型字段的对象数组,则需先提取目标属性再做进一步处理。此时应特别注意精度丢失问题并采取适当措施加以规避[^3]。
```java
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
class Item {
private BigDecimal price;
// Constructor & Getters/Setters omitted for brevity
}
public class ComplexDataStructureAvg {
public static void main(String[] args) {
List<Item> items = new ArrayList<>();
// Assume that the 'items' collection has been populated with data
BigDecimal total = items.stream().filter(item -> item.getPrice() != null)
.map(Item::getPrice).reduce(BigDecimal.ZERO,
BigDecimal::add);
long size = items.size();
BigDecimal avgValue = total.divide(new BigDecimal(size),BigDecimal.ROUND_HALF_UP);
System.out.println(avgValue.toString());
}
}
```
阅读全文
相关推荐











