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

Java打印Lesson对象输出类名@哈希值串的原因及解决方法

异常输出含义

week23.UniversityProblem.Lesson@77459877是Java对象默认的字符串表示形式:所有Java类都默认继承顶层Object类,当你直接打印对象时,会自动调用Object类自带的toString()方法,返回值格式固定为类的全路径名@对象哈希码的十六进制表示。
出现该输出的核心原因是你没有为Lesson类自定义字符串转换规则,程序不会自动读取类里的name、credit属性拼接成可读文本。

修复方法

核心修改是为Lesson类重写toString()方法,自定义对象打印时的输出内容,同时可以顺带修复现有代码里的Scanner输入逻辑bug。

1. 修改Lesson类,添加toString()重写

你原来的Lesson类里多余导入了ArrayList类,可以直接删除,修改后的完整Lesson类代码如下:

package week23.UniversityProblem;

public class Lesson {
    String name;
    int credit;

    @Override
    public String toString() {
        return "课程名:" + name + ",学分:" + credit;
    }
}

重写方法后,你原有循环打印选课信息的代码不需要改动,打印Lesson实例时会自动输出你定义的可读内容,不再返回内存地址格式的字符串。

2. (可选优化)修复输入逻辑bug

你当前代码创建了两个Scanner对象同时绑定标准输入流,且调用nextInt()读取菜单选项后,没有处理输入流中残留的换行符,会导致读取学生姓名时直接读到空值。可以删除多余的scanner2实例,统一使用一个Scanner对象,在每次调用nextInt()后补一次nextLine()消费残留换行即可。
修改后的主方法输入部分示例:

// 仅保留一个Scanner实例
Scanner scanner = new Scanner(System.in);
int o = 0;
while (o != 2){
    System.out.println("请选择要使用的功能:");
    System.out.println("1. 添加学生并打印选课信息");
    System.out.println("2. 退出");
    o = scanner.nextInt();
    scanner.nextLine(); // 消费整数读取后残留的换行符
    if(o == 1){
        Student s = new Student();
        System.out.println("姓名:");
        s.name = scanner.nextLine();
        int c = 0;
        int o2 = 0;
        while(c < s.maxCredit){
            System.out.println("请选择要选修的课程:");
            System.out.println("1. " + math101.name);
            System.out.println("2. " + phys101.name);
            System.out.println("3. " + cs102.name);
            System.out.println("4. " + ictapp.name);
            System.out.println("5. " + rs101.name);
            System.out.println("6. 退出选课");
            o2 = scanner.nextInt();
            // 其余选课判断逻辑保持不变即可

修改完成后运行程序,输出效果如下,符合预期:

Tudor 
课程名:Mathematics,学分:4
课程名:Physics,学分:3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:45:33