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

Java字符串反转类方法返回空字符串问题求助

问题分析与解决

核心错误原因

  • 循环条件写反:原代码循环条件为i <= 0,当传入"Hello"时,初始i = 5-1 = 4,4 <= 0不成立,循环体完全没执行,自然返回空字符串。正确条件应为i >= 0,才能从最后一个字符遍历到第一个字符。
  • 成员变量设计不合理:invertedString作为类的成员变量,多次调用mInvertString时,之前的结果会累加(比如第一次反转"Hello"得到"olleH",第二次反转"World"会得到"olleHdlroW"),不符合方法的预期行为。

修正后的代码

优化后的InvertString类

public class InvertString {
    // 将字符串变量改为方法内局部变量,避免状态残留
    public String mInvertString(String text) {
        String invertedString = "";
        // 修正循环条件为i >= 0
        for (int i = text.length() - 1; i >= 0; i--) {
            invertedString += text.charAt(i);
        }
        return invertedString;
    }
}

主类代码(无需修改)

public class MainInvertString {
    public static void main(String[] args) {
        InvertString invertString = new InvertString();
        String test = invertString.mInvertString("Hello");
        System.out.println("Result: "+test); // 输出 Result: olleH
    }
}

额外优化建议

Java中String是不可变对象,用+=拼接字符串会频繁创建新对象,性能较差。处理较长字符串时,建议用StringBuilder优化:

public String mInvertString(String text) {
    StringBuilder sb = new StringBuilder();
    for (int i = text.length() - 1; i >= 0; i--) {
        sb.append(text.charAt(i));
    }
    return sb.toString();
}

或者直接使用StringBuilder内置的反转方法,代码更简洁:

public String mInvertString(String text) {
    return new StringBuilder(text).reverse().toString();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:55:17