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

Java项目中Dog/Monkey列表打印十六进制代码问题求助

解决Java中打印Dog/Monkey列表显示哈希码的问题

你看到的Dog@42a57993这类输出是Java默认的对象字符串表示,来自Object类的toString()方法,它只会输出类名加对象的哈希码。要显示对象的实际属性,必须在Dog和Monkey类中正确重写toString()方法。

1. 为Dog类添加toString()方法

在你的Dog类中添加以下方法,把所有属性拼接成可读的字符串:

public class Dog {
    // 此处保留Dog类已有的成员变量、构造方法和getter/setter
    
    @Override
    public String toString() {
        return "Dog{" +
                "name='" + getName() + '\'' +
                ", breed='" + getBreed() + '\'' +
                ", gender='" + getGender() + '\'' +
                ", age='" + getAge() + '\'' +
                ", weight='" + getWeight() + '\'' +
                ", acquisitionDate='" + getAcquisitionDate() + '\'' +
                ", acquisitionCountry='" + getAcquisitionCountry() + '\'' +
                ", trainingStatus='" + getTrainingStatus() + '\'' +
                ", reserved=" + isReserved() +
                ", inServiceCountry='" + getInServiceCountry() + '\'' +
                '}';
    }
}

2. 为Monkey类添加toString()方法

Monkey类包含物种、尾长等额外属性,需要在toString中一并体现:

public class Monkey {
    // 此处保留Monkey类已有的成员变量、构造方法和getter/setter
    
    @Override
    public String toString() {
        return "Monkey{" +
                "name='" + getName() + '\'' +
                ", gender='" + getGender() + '\'' +
                ", age='" + getAge() + '\'' +
                ", weight='" + getWeight() + '\'' +
                ", acquisitionDate='" + getAcquisitionDate() + '\'' +
                ", acquisitionCountry='" + getAcquisitionCountry() + '\'' +
                ", trainingStatus='" + getTrainingStatus() + '\'' +
                ", reserved=" + isReserved() +
                ", inServiceCountry='" + getInServiceCountry() + '\'' +
                ", species='" + getSpecies() + '\'' +
                ", tailLength='" + getTailLength() + '\'' +
                ", height='" + getHeight() + '\'' +
                ", bodyLength='" + getBodyLength() + '\'' +
                '}';
    }
}

3. 验证效果

当你再次运行菜单选项4或5时,System.out.println(dogList)或System.out.println(monkeyList)会自动调用每个元素的toString()方法,输出每个动物的完整属性信息,而非哈希码。

额外小修复

你的intakeNewMonkey方法中,调用scanner.nextBoolean()后未清除输入缓冲区的换行符,会导致后续scanner.nextLine()读取空字符串,建议补充一行:

System.out.println("Is this monkey reserved?");
boolean reserved = scanner.nextBoolean();
scanner.nextLine(); // 添加此行,清除换行符
System.out.println("Which country is the monkey in service?");
String inServiceCountry = scanner.nextLine();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:09:52