控制台随机输入一个数,用where循环实现回文数判断。
public static void test2(){
Scanner sc = new Scanner(System.in);
System.out.println("请输入:");
//输入的数
int num = sc.nextInt();
//转为字符串
String numStr = num+"";
//获取字符串长度
int length = numStr.length();
//长度从1开始
int index = 1;
//拆分之后累计相加的数
int newNumber = 0;
//index小于他的长度进入循环 index每次+1 当大于他的长度说明已经拆完了 不进入循环
while (index<=length){
//对应规则 个对万 十对千 百对百 千对十 万对个
// 17571 17571
//第一次拆下来第一位是 新合成数的个位 不乘10的任何次方
if(index==1){
//Math.pow(a,b)相当于a的b次方 与 math.random()是相同包下面的
newNumber = (num / (int) Math.pow(10, length - 1))+newNumber;
}else if(index>1&&index<length){
//中间拆除的 要乘以十的相应次方 类似于五位数(取千位)int num2 = ((num % 10000)/1000)*10; (取百位)int num3 = ((num % 1000)/100)*100;
newNumber = ((num % (int) Math.pow(10, length - (index-1))) / (int) Math.pow(10, length - index) * (int) Math.pow(10, index-1))+newNumber;
}else if(index==length){
//最后一次拆下来的数 必定是新合成数的第一位 必须乘以10的字符串长度-1次方 例如 121 121 长度为3(从1开始 1-3) 100=10的2次方
newNumber = (num % (int) Math.pow(10, 1)*(int) Math.pow(10, length - 1))+newNumber;
}
//index每次+1
index++;
}
if(num==newNumber){
System.out.println(num+"是回文数");
}else{
System.out.println(num+"不是回文数");
}
}
转载请注明出处!