Java编写CustomString类set/get字符串方法测试返回null求助
CustomString类代码错误排查
问题描述
我是Java初学者,正在完成Java入门课程的相关练习,目前遇到代码问题:我自认为编写的代码逻辑正确,但运行测试时用例失败,方法返回null,恳请大家帮忙排查代码中的错误,非常感谢。
初始类结构代码
public class CustomString { String myString; boolean isSet; public CustomString() { this.myString = (null); this.isSet = (false); } }
功能需求
- 如果字符串未通过setString方法设置,getString方法应返回null
- setString方法需要设置当前实例的字符串值,同时将isSet属性置为true
- 如果传入setString的字符串参数为null,则将isSet属性置为false
自行实现的方法代码
public String getString() { if (this.myString == null || this.isSet == false) { return null; } else { return this.myString; } } public void setString(String string) { if (this.myString == null) { this.isSet = false; } else { this.isSet = true; } }
错误点说明
你的代码存在两个核心问题,直接导致测试不通过:
setString方法完全没有给成员变量myString赋值:无论调用方法传入什么参数,myString始终是构造方法初始化的null值,这是getString一直返回null的核心原因。setString的判断逻辑写错了判断对象:需求要求根据*传入的参数string*是否为null设置isSet状态,你的代码判断的是当前实例已有的this.myString是否为null,逻辑完全不符合要求。
另外构造方法里给null、false加的多余括号不影响运行,但不符合Java常规编码习惯,可以去掉。getString方法的判断条件也可以简化,只要isSet为false就说明没有设置有效字符串,不需要额外判断myString是否为null。
修复后可运行的完整代码
public class CustomString { String myString; boolean isSet; public CustomString() { this.myString = null; this.isSet = false; } public String getString() { return isSet ? myString : null; } public void setString(String string) { // 先把传入的参数赋值给成员变量存储 this.myString = string; // 根据传入参数是否为null设置isSet状态 this.isSet = string != null; } }
修复逻辑说明
- 去掉构造方法里多余的括号,保持代码简洁
setString方法首先将传入的参数赋值给myString,保证传入的字符串能被实例正确存储- 直接根据传入参数是否为null设置
isSet值:参数非null时isSet为true,参数为null时isSet为false,完全匹配需求规则 getString方法直接根据isSet状态返回结果:isSet为true说明存储了有效非null字符串,直接返回;否则返回null,逻辑更精简。
内容的提问来源于stack exchange,提问作者roxyrox
相关产品推荐
相关产品推荐

