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

Java代码if语句未执行求助:回文字符串判断逻辑失效

问题分析与解决方案

嘿,这个问题我太熟啦!你遇到的核心问题是Java中字符串比较的方式用错了——你肯定是在if判断里用了==来比较原字符串和反转后的字符串,对吧?

为什么会出现这个问题?

在Java里,String是引用类型,==运算符比较的是两个字符串对象的内存地址,而不是它们的实际内容。哪怕你反转后的字符串和原字符串内容完全一致(比如回文字符串),反转操作生成的是一个新的String对象,和原字符串的内存地址不一样,所以==会返回false,导致你的if语句永远不会执行。

怎么解决?

把字符串比较换成equals()方法就好啦!String类的equals()方法是专门用来比较两个字符串的内容是否相等的。如果需要忽略大小写的回文判断,还可以用equalsIgnoreCase()。

修正后的完整代码示例

import java.util.Scanner;
public class TestScannerPalindrome {
    static String reverse(String par) {
        String reversed = new String();
        for(int i = par.length() - 1; i >= 0; i--) {
            reversed += par.charAt(i);
        }
        return reversed;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String original = scanner.nextLine();
        String reversedStr = reverse(original);
        
        // 这里用equals()代替==
        if (original.equals(reversedStr)) {
            System.out.println("输入的是回文字符串!");
        } else {
            System.out.println("输入的不是回文字符串!");
        }
        scanner.close();
    }
}

额外小建议

另外,字符串拼接用+=在循环里效率不高,因为每次都会生成新的String对象。如果追求性能的话,可以改用StringBuilder来实现反转:

static String reverse(String par) {
    StringBuilder sb = new StringBuilder(par);
    return sb.reverse().toString();
}

这样代码更简洁,效率也更高~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:38:35