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

如何修复getAge()方法以获取代码中年龄最大学生的年龄?

嘿,我来帮你搞定这个问题!首先你的代码里有两个核心问题需要修正:一是Student类既没有定义存储年龄的成员变量,也没有对外暴露年龄的getAge()方法;二是缺少找出列表中最大年龄的逻辑。下面一步步来修复:

第一步:完善Student类的基础结构

首先得给Student类添加成员变量,并实现getAge()方法——这是获取学生年龄的前提,不然根本没法访问每个学生的年龄值。修改后的类代码如下:

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Comparator; // 如果用Stream的方法引用,需要导入这个

public class Student {
    // 添加成员变量,对应构造方法的参数
    private String name;
    private int age;
    private String major;
    private String SSN;

    // 构造方法初始化成员变量
    public Student(String name, int age, String major, String SSN) {
        this.name = name;
        this.age = age;
        this.major = major;
        this.SSN = SSN;
    }

    // 重点:添加getAge()方法,用于获取学生年龄
    public int getAge() {
        return this.age;
    }

    public static void main(String[] args) {
        List<Student> studentList = new ArrayList<>();
        studentList.add(new Student("Alice", 22, "Computer Science", "603-28-5324"));
        studentList.add(new Student("Arthur", 19, "Math","402-23-5463"));
        studentList.add(new Student("Kim", 20, "English","607-34-5463"));
        // 这里可以继续添加其他学生对象

        // 下面是获取最大年龄的逻辑,二选一即可
    }
}
第二步:实现获取最大年龄的逻辑

这里给你两种常用方案,根据你的习惯选择:

方案一:Java 8+ Stream API(推荐,简洁优雅)

利用Stream的max()方法结合比较器,能快速找出年龄最大的学生,再提取年龄。这种写法代码量少,可读性也高:

// 在main方法中添加这段代码
Optional<Student> oldestStudent = studentList.stream()
    // 用方法引用简化比较逻辑,比较两个学生的年龄
    .max(Comparator.comparingInt(Student::getAge));

// 处理Optional,避免列表为空时出现空指针异常
if (oldestStudent.isPresent()) {
    int maxAge = oldestStudent.get().getAge();
    System.out.println("年龄最大的学生年龄是:" + maxAge); // 输出22
} else {
    System.out.println("学生列表为空,无法获取最大年龄!");
}

方案二:传统遍历比较(适合新手理解)

如果你对Stream不太熟悉,用for循环遍历列表,手动记录最大年龄也是个稳妥的选择:

// 在main方法中添加这段代码
if (studentList.isEmpty()) {
    System.out.println("学生列表为空,无法获取最大年龄!");
    return;
}

// 初始化最大年龄为列表第一个学生的年龄
int maxAge = studentList.get(0).getAge();
// 遍历所有学生,更新最大年龄
for (Student student : studentList) {
    if (student.getAge() > maxAge) {
        maxAge = student.getAge();
    }
}

System.out.println("年龄最大的学生年龄是:" + maxAge); // 输出22

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:25:13