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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:27:25