Java 回文数判断:while 循环与 for 循环两种算法实现
什么是回文数?
回文数正读反读都一样。例如:121、393、48084。它们具有轴对称特性,常见于算法面试题。
在 Java 中,回文数检查是常见面试题和编程挑战。算法直观但有多种实现方式。
算法概览
- 读取输入整数。
- 反转其数字并保存结果。
- 比较反转后的数与原数。
- 相等则为回文数,否则不是。
使用 while 循环判断
下面是使用 while 循环反转数字并判断回文的简洁 Java 程序,包含中间步骤打印以便理解过程。
package com.guru99;
public class PalindromeNum {
public static void main(String[] args) {
int inputNumber = 171; // 待检查数字
int reversed = 0;
int temp = inputNumber;
while (temp > 0) {
int lastDigit = temp % 10;
reversed = (reversed * 10) + lastDigit;
temp /= 10;
}
System.out.println("反转后的数字: " + reversed);
if (reversed == inputNumber) {
System.out.println("该数字是回文数。");
} else {
System.out.println("该数字不是回文数。");
}
}
}
输出示例
反转后的数字: 171
该数字是回文数。
使用 for 循环判断
相同逻辑可用 for 循环表达,适合循环计数器自然递减的场景。
package com.guru99;
public class PalindromeNum {
public static void main(String[] args) {
int inputNumber = 185; // 待检查数字
int reversed = 0;
int temp = inputNumber;
for (; temp > 0; temp /= 10) {
int lastDigit = temp % 10;
reversed = (reversed * 10) + lastDigit;
}
System.out.println("反转后的数字: " + reversed);
if (reversed == inputNumber) {
System.out.println("该数字是回文数。");
} else {
System.out.println("该数字不是回文数。");
}
}
}
输出示例
反转后的数字: 581
该数字不是回文数。
注意事项与最佳实践
- 负数处理: 由定义,负数不是回文数(负号破坏对称)。输入为负时直接返回
false。 - 溢出风险: 32 位整数反转可能溢出。生产代码建议使用
long存储反转结果,或在乘法前检查溢出。 - 字符串法替代: 转字符串后比较正反序,代码更简单且天然避免溢出,适合超大数字:
public static boolean isPalindromeString(int x) {
if (x < 0) return false;
String s = String.valueOf(x);
return s.equals(new StringBuilder(s).reverse().toString());
}
更多详细解释可参考 GeeksforGeeks 与 Stack Overflow 讨论。
java
- 掌握 C# while 与 do-while 循环:语法、示例与最佳实践
- 掌握 C# for 循环:语法、执行流程与实战示例
- 掌握 C++ for 循环:语法、流程图、范围循环与实战模式
- C++ while 与 do-while 循环:重复控制流完全掌握
- Python 循环完全指南:for、while、break、continue、enumerate 详解
- Java Hello World:你的第一个程序
- 精通 Java 增强 for 循环:语法、示例与最佳实践
- Java 判断素数(质数)的完整指南与代码实现
- Java 打印 1 到 100 之间所有素数:完整代码与步骤解析
- Java 生成斐波那契数列:for 循环、while 循环与递归实现全解析
- Java 判断阿姆斯特朗数(自幂数):for 循环与 while 循环实现
- Java 回文数判断:while 循环与 for 循环两种算法实现