题目
从标准输入读入一个整数 n,判断其是否为回文整数(即正反读完全一致的数字)。
输入格式:一行输入一个整数 n。
输出格式:若为回文数输出 yes,否则输出 no,末尾换行。
数据范围与约定:-2×109 ≤ n ≤ 2×109。
思路与算法
1. 负数判定
负数带负号,如 -121 反转后为 121-,故所有负数必然不是回文数。
2. 反转整数对比
拷贝原数 t = n,利用 rev = rev * 10 + t % 10; t /= 10; 构造完整反转数值,最后比较 rev == n。注意反转过程建议使用 long 防止溢出。
完整程序
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
// 负数带负号,不是回文数
if (n < 0) {
System.out.println("no");
return;
}
int orig = n;
long rev = 0;
// 反转整数对比
while (n > 0) {
rev = rev * 10 + n % 10;
n /= 10;
}
System.out.println(rev == orig ? "yes" : "no");
}
}运行示例
输入:
12321输出:
yes