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

字符串回文判断问题排查:为何始终输出‘not palindrome’?

回文判断代码错误分析与修复

错误原因

核心问题是不同类型对象的equals比较逻辑不匹配:

  • st是String类型,st1是StringBuffer类型
  • String的equals()方法会先校验传入对象是否为String实例,不是则直接返回false;StringBuffer默认的equals()方法只比较对象引用(和==行为一致),所以无论内容是否相同,两者的equals比较结果都是false,导致始终走else分支输出"not palindrome"。

修复方案

方案1:将StringBuffer转为String后再比较

public static void main(String[] args) {
    String st = "iti";
    StringBuffer st1 = new StringBuffer(st);
    st1.reverse();
    System.out.println(st1);
    // 把StringBuffer转为String后,用String的equals比较内容
    if (st.equals(st1.toString())) {
        System.out.print("palindrome string");
    } else {
        System.out.print("not palindrome");
    }
}

方案2:直接使用StringBuilder反转并转成String(更简洁)

public static void main(String[] args) {
    String st = "iti";
    String reversedSt = new StringBuilder(st).reverse().toString();
    System.out.println(reversedSt);
    if (st.equals(reversedSt)) {
        System.out.print("palindrome string");
    } else {
        System.out.print("not palindrome");
    }
}

测试结果

运行修复后的代码,输入"iti"会依次输出iti和palindrome string,符合回文判断的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:32:12