首先要明白什么是回文数,回文数就是指一个数正着读与反着读数字是一样的,例如12321,正序是1,2,3,2,1,逆序也为1,2,3,2,1,类似于这样的数字就称为回文数。
核心算法:
使用循环语句,将要判断的数用10进行取余,来获得末位数,再将要判断的数除以10,消除数已经取出来的末位数。然后再将得到的每一位末位数*10+新得到的余数来构成新数,判断新数与要判断的数大小是否一致,如果一致,则此数为回文数。
用实例解释:
判断a=121是否为为回文数:
num_num=0.....初始化新数为0
第一次:
x=a%10............得到x=1,这个1是末尾的1,
a=a/10.............得到a=12,消除已经得到的末尾数1,此时末位数成为2
new_num=new_num*10+x.......初始化new_num为0是为了统一算式,这样便于看出循环,此时new_num=0*10+1=1
第二次:
x=a%10..........得到x=2,第一次后a变成了12
a=a/10............得到a=1,消除末尾数2,此时尾数成为1
new_num=new_num*10+x.......此时new_num=1*10+2=12
第三次
x=a%10..........得到x=1,第一次后a变成了1
a=a/10............得到a=1,消除末尾数1,此时数变为了0
new_num=new_num*10+x.......此时new_num=12*10+1=121
在这时得到了新数,那么就要出循环了,所以退出循环的条件为这个数==0时,出循环,然后新数与旧数比较,判断是否为回文数
特别要注意将原有的数暂时存起来,否则后面的计算会使数变为0
代码:
public static void main(String[] args){
int a = 12321;
int x = a;//将这个原有的数存起来,否则再后来的运算中数会变为0
int new_num = 0;
while (a!=0) {
int y = a%10;
a /= 10;
new_num = new_num*10 + y;
}
System.out.println(new_num);
if (new_num == x) {
System.out.println("a是回文数");
}else {
System.out.println("a不是回文数");
}
}