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

Java回文数判断代码异常:始终输出非回文数,需修正

问题排查与修复方案

核心错误分析

你的代码存在关键逻辑漏洞:在while循环中,你一直用temp % 10取余数,但temp的值自始至终没有变化,而控制循环次数的n在不断被除以10递减。拿输入121举例:

  • 第一次循环:n=121,temp=121,余数是1,reverse变成1,n变为12
  • 第二次循环:n=12,temp还是121,余数还是1,reverse变成11,n变为1
  • 第三次循环:n=1,temp依旧121,余数依旧1,reverse变成111,n变为0
    最终reverse是111,和原始值temp(121)不相等,自然会输出错误结果。

修复后的代码

把循环里的temp % 10改成n % 10,让每次取余的是当前正在递减的n,同时保留temp作为原始数字的备份用于最终比较。修复后的代码如下:

public static void palindromeNo(int n){    
    // 保存原始数字用于最后对比
    int temp = n;                 
    int reverse = 0;                 
    while (n > 0) {
        // 用当前的n取余数,而非固定不变的temp
        int remainder = n % 10;                     
        reverse = (reverse * 10) + remainder;
        n = n / 10;
    }                      
    if(reverse == temp){                         
        System.out.println("this is a palindrome number");
    } else {                         
        System.out.println("this is not a palindrome number");
    }
}

public static void main(String args[]){  
    palindromeNo(121);
}

验证结果

运行修复后的代码,输入121时,reverse会被正确计算为121,和temp相等,程序会输出this is a palindrome number,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:52:53