输入一个n位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
import java.util.Scanner; public class IsPalindrome { public static void main(String[] args) { // TODO Auto-generated method stub /* 12、一个n位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 */ Scanner reader=new Scanner(System.in); int a=0; System.out.println("输入回文数a:"); a=reader.nextInt();//回文数 //计算输入数的位数 int count=countNumbersOfBit(a); //求输入数字的最高位对应的基数 int tens=cardinalNumber(count); //判断是不是回文数 boolean ispalindrome=isaPalindrome(a,count,tens); //如果是回文数那就输出 if(ispalindrome) System.out.println(a+"是回文数!"); } //统计数字的位数 static int countNumbersOfBit(int n) { int count = 0; while (n > 0) { n = n / 10; count++; } return count; } //计算最高位的基数 static int cardinalNumber(int count) { int tens=1; for(int i=0;i<count-1;i++) { tens*=10; } return tens; } /* //判断是不是回文数 参数为输入的数a,数a的长度count,数a最高位对应的基数(对应最高位为1其余位补零) */ static boolean isaPalindrome(int a,int count,int tens) { int hight;//最高位 int low;//最低位 int aa=a;//复制a boolean isPalindrome=true; for(int i=0;i<count/2;i++)//求万位 { hight=a/tens;//取得最高位 // System.out.println("hight:"+hight); a=a-hight*tens;//减去最高位 tens=tens/10;//位数减1 //求最低位 low=aa; aa=aa/10; // System.out.println("low:"+low); if(hight!=low) { isPalindrome=false;//如果不是回文数,让标志位假 System.out.println("不是回文!"); break; } } return isPalindrome; }