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

我的Java回文数判断代码为什么不生效?reverse正常却不返回true

代码问题根因
  • 最核心的错误:没有保存输入的原始数值,循环过程中直接修改了入参number的值,最终对比number == reverse时,number已经被逐次除以10仅剩余最后一位数字,和完整的反转值reverse永远不可能相等,这就是你看到reverse值正确但始终返回false的直接原因。
  • 次要问题1:反转计算的逻辑写法不规范,额外加的break属于冗余逻辑,虽然暂时能算出正确的reverse值,但存在边界case错误隐患,比如输入10这类末尾带0的数值时会计算错误。
  • 次要问题2:负数处理逻辑错误,负数本身携带负号,本身就不属于回文数,直接将负数转成正数判断不符合回文数的定义规则。
修正后的实现代码
public class NumberPalindrome {
    public static boolean isPalindrome(int number) {
        // 负数直接返回false
        if (number < 0) {
            return false;
        }
        int original = number;
        int reverse = 0;
        while (number > 0) {
            int lastDig = number % 10;
            // 正确的反转计算顺序:先乘10再加末位
            reverse = reverse * 10 + lastDig;
            number /= 10;
        }
        // 用原始值和反转值对比
        return original == reverse;
    }
}

内容的提问来源于stack exchange,提问作者Shafa'at Jamil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:39:03