打印1

回文就是逆向和正向的字符都相同。
实现:
方法一:利用StringBuffer类的reverse()方法
(1)int -> String -> StringBuffer
-> String
(2)使用String类的equals()方法判断逆序后的字符串是否和逆序前的字符串相等。
缺点:效率低,进行了很多不必要的步骤。

方法二:利用%反向获取数字的每一位;利用/反向移位。

1
2
3
4
5
6
int temp = 0;
while (num > 0) {
temp = temp *10 + num % 10; //反向组成新的值
num /= 10; //获取除最后一位的其它位的数字
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* 打印1~1000内的回文
* @author PengJuan
*
*/
public class {
public static void main(String[] args) {
for (int i = 10; i < 1000; i++) {
if (isCircleNumber(i)) {
System.out.println(i);
}
}
}
//判断数字是否是回文
private static boolean isCircleNumber(int num) {
int oldVal = num; //需要定义,不然num被改变,后面比较时无法访问原num
int newVal = 0;
while (num > 0) {
newVal = newVal * 10 + num % 10;
num /= 10;
}
return oldVal == newVal;
}
}