You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从多个学生成绩ArrayList中获取全局最小与最大值?

如何获取学生成绩的全局最小和最大值?

嘿,你已经完成了最核心的部分——搞定了学生成绩的输入、单个学生成绩的管理,甚至能算出每个学生的成绩极值!现在就差最后一步把这些单个学生的最值汇总,找出全局的最小和最大值,其实非常简单,我给你两种实用的方案:

方案一:传统循环遍历(直观易理解)

首先,你需要先把所有学生对象存到一个集合里(比如List<Student> students,我猜你应该已经在这么做了),然后初始化两个变量用来跟踪全局的最小和最大值:

// 初始化全局最值,用Integer.MAX_VALUE/MIN_VALUE作为初始值,确保第一个学生的成绩能覆盖它们
int globalMin = Integer.MAX_VALUE;
int globalMax = Integer.MIN_VALUE;

接下来遍历每个学生,拿他们的个人最值和全局最值做比较,更新全局值:

for (Student student : students) {
    int currentStudentMin = student.getMin();
    int currentStudentMax = student.getMax();
    
    // 如果当前学生的最小值比全局最小值还小,更新全局最小值
    if (currentStudentMin < globalMin) {
        globalMin = currentStudentMin;
    }
    
    // 如果当前学生的最大值比全局最大值还大,更新全局最大值
    if (currentStudentMax > globalMax) {
        globalMax = currentStudentMax;
    }
}

遍历结束后,globalMin就是所有学生成绩里的全局最小值,globalMax就是全局最大值啦。

方案二:Java 8 Stream API(简洁优雅)

如果你熟悉Java 8及以上的Stream特性,可以用更清爽的方式实现:

// 获取全局最小值
int globalMin = students.stream()
    .mapToInt(Student::getMin) // 把每个学生的最小值转成int流
    .min() // 找出流中的最小值
    .orElseThrow(() -> new IllegalStateException("没有学生数据哦")); // 处理空集合的情况

// 获取全局最大值
int globalMax = students.stream()
    .mapToInt(Student::getMax)
    .max()
    .orElseThrow(() -> new IllegalStateException("没有学生数据哦"));

这里的orElseThrow是防止当没有学生数据时出现异常,你也可以换成orElse(0)之类的默认值,根据你的业务需求调整就行。

小提示

如果你的getMin()和getMax()方法返回的是Integer而非int,那初始化全局变量的时候可以用null,然后在循环里先判断是否为null再赋值,不过用int类型的极值初始化会更省心,避免空指针问题。

内容的提问来源于stack exchange,提问作者Justin Robert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:08:58