Java调用getName方法无法显示对象数组中存储的Baby姓名问题求助
问题原因
你无法正常输出数组中存储的姓名,核心问题是Baby实体类的setName()方法存在逻辑错误:
- 仅对空输入的情况写了赋值逻辑,合法输入的姓名完全没有赋值给类的
name属性,导致输出时始终显示默认构造方法初始化的Baby - 空输入分支的逻辑顺序错误,先设置了默认值
"Baby",又马上用空的输入值覆盖了默认值,空值校验完全失效
修复代码
直接替换Baby类中的setName()方法即可:
public void setName(String name) { // 校验输入是否为null、空或全为空白字符 if (name == null || name.trim().isEmpty()){ this.name = "Baby"; } else { // 合法输入正常赋值 this.name = name; } }
可选优化
你当前的equals()方法没有做类型和空值校验,传入非Baby类型的参数时会抛出类型转换异常,建议优化为以下版本:
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null || getClass() != obj.getClass()) return false; Baby baby = (Baby) obj; return age == baby.age && name.equalsIgnoreCase(baby.name); }
修复完成后重新运行代码,输入的姓名就能正常存入数组并在输出环节展示。
内容的提问来源于stack exchange,提问作者SillyGoose
相关产品推荐
相关产品推荐

