班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。 输入格式 第一行有一个整数 n(1≤n≤100),表示学生的人数。其后 n 行每行有 1 个整数,表示每个学生的年龄,取值为 15 到 25。 输出格式 输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。用Java解题
时间: 2025-03-30 07:02:43 浏览: 93
### 题目分析
这是一道简单的平均值计算问题,要求根据输入的学生人数和每位学生的年龄,计算班级内所有学生的平均年龄,并保留两位小数。
以下是解决方案的具体步骤:
---
### 实现思路
1. **读取学生人数 `n`**
第一步是从标准输入中获取学生总数 `n`,并验证它是否满足约束条件 \( 1 \leq n \leq 100 \)。
2. **逐一读取每位学生的年龄**
接下来循环读取每一位学生的年龄。根据题目描述,每个学生的年龄范围在 [15, 25] 内。
3. **计算总年龄和及平均年龄**
- 将所有学生的年龄累加得到总年龄。
- 平均年龄公式为:\(\text{average} = \frac{\text{sum of ages}}{\text{n}}\)。
4. **格式化输出结果**
- 使用 Java 中的 `DecimalFormat` 类或 `System.out.printf()` 方法将结果精确到小数点后两位。
---
### 核心代码 (Java)
```java
import java.util.Scanner;
public class AverageAgeCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Step 1: 获取学生人数 n
int n = scanner.nextInt();
// 数据校验(虽然理论上不需要)
if (n < 1 || n > 100) {
System.err.println("学生人数超出合法范围");
return;
}
double sumOfAges = 0; // 记录总年龄
// Step 2: 逐个读取学生的年龄
for (int i = 0; i < n; i++) {
int age = scanner.nextInt();
if (age < 15 || age > 25) { // 年龄合法性检查
System.err.println("年龄不在合理范围内:" + age);
return;
}
sumOfAges += age;
}
// Step 3: 计算平均年龄
double averageAge = sumOfAges / n;
// Step 4: 输出结果,保留两位小数
System.out.printf("%.2f%n", averageAge); // %.2f 表示保留两位小数
scanner.close();
}
}
```
---
### 示例运行
#### 输入示例 1:
```
5
18
20
22
19
21
```
#### 输出示例 1:
```
20.00
```
#### 运行过程解析:
- 学生人数 \( n = 5 \)
- 各位学生年龄分别为:\( 18, 20, 22, 19, 21 \)
- 总年龄 \( 18+20+22+19+21 = 100 \)
- 平均年龄 \( 100 / 5 = 20.00 \)
---
### 关键技术点
1. **浮点数精度控制**
- 使用 `printf("%.2f")` 或者 `DecimalFormat("#.00").format(value)` 控制浮点数显示的小数位数。
2. **异常检测**
- 对于不符合范围的数据(例如负数年龄、超限学生数量等),程序应及时报错终止。
---
阅读全文
相关推荐












