Java中输入为空、空格或回车时如何让构造方法返回默认red值
问题原因
你当前代码的问题在于setColor方法没有对输入值做有效性校验,无论传入的字符串是空、全空格还是正常内容,都会直接覆盖成员变量color的原有值。用户按下回车时input.nextLine()返回的是空字符串"",输入全空格时返回的是对应长度的空白字符串,这两类值都会直接覆盖构造方法中初始化的默认值"red",最终输出空结果。
解决方案
对setColor方法增加输入有效性校验,只有当输入的是有效非空白内容时才更新颜色,否则保留原有默认值,修改后的代码如下:
修改后的实体类代码
public class Constructor_Object { private String color; // 无参构造方法 public Constructor_Object(){ color = "red"; } public Constructor_Object(String color){ // 构造方法复用setter的校验逻辑,避免重复代码 this.setColor(color); } // 增加校验逻辑的setter public void setColor(String color){ // 判断输入是否为null、空字符串、全空白字符串 if (color == null || color.trim().isEmpty()) { // 无效输入时跳过赋值,保留原有默认值,也可以主动写this.color = "red"强制重置默认值 return; } this.color = color; } public String getColor(){ return color; } }
效果说明
修改后:
- 用户输入为空、全空格时,
setColor会跳过赋值逻辑,保留构造方法初始化的默认值"red" - 用户输入有效颜色字符串时,才会更新为用户输入的内容
- 有参构造方法复用了setter的校验逻辑,也能避免传入空值的问题
内容的提问来源于stack exchange,提问作者Fefs
相关产品推荐
相关产品推荐

