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
相关产品推荐
相关产品推荐

