2.统计数据,有某学生成绩的数据结构,如何获得满足语数外三科都大于60的平均分、最高分和最低分数据。
时间: 2024-10-18 15:08:31 浏览: 37
要从一个包含学生成绩的数据结构中获取满足语数外三科都大于60分的学生的平均分、最高分和最低分,首先需要确定数据结构的具体形式。常见的数据结构可能是列表(List),数组(Array),或者是字典(Dictionary),其中每个学生的成绩可能会存储在一个单独的对象或者元组中,如 `Map<String, List<Integer>>` 或者 `List<Map<String, Integer>>`。
这里以`List<Map<String, Integer>>`为例,假设每个`Map`代表一个学生,键分别为"语文"、"数学"、"外语",我们可以这样做:
```java
import java.util.*;
class StudentScore {
private String studentName;
private Map<String, Integer> scores;
// 构造方法、getter和setter省略
}
public class StatsCalculator {
public static void calculateStats(List<StudentScore> students) {
int totalSum = 0;
int maxTotal = 0;
int minTotal = Integer.MAX_VALUE;
int count = 0;
for (StudentScore student : students) {
int total = student.getScores().values().stream()
.filter(score -> score > 60)
.mapToInt(Integer::intValue)
.sum();
if (total > maxTotal) {
maxTotal = total;
}
if (total < minTotal) {
minTotal = total;
}
totalSum += total;
count++;
}
double average = (double) totalSum / count;
System.out.println("满足条件学生的平均分为:" + average);
System.out.println("满足条件学生的最高分为:" + maxTotal);
System.out.println("满足条件学生的最低分为:" + minTotal);
}
}
```
在这个例子中,我们遍历每个学生,计算他们的总成绩(只有语数外三科大于60的部分),更新最大和最小值,以及累计总分数。最后,我们将累计总分除以学生总数得到平均分。
阅读全文