📝求1 - 1000之间的回文数,并且依次输出

回文数即一个数的逆序和正序完全相同,如12321 逆序后是12321,仍然是原来的数

🤔算法分析:

首先负数不是回文数如-12321,其次末尾是0的也不是回文数如 100,120

所以小于0或者能被10整除的数直接Pass🙃采用For循环作为1 - 1000的遍历

//i为For循环遍历数
if (i < 0 || (i % 10 == 0)) continue;   //进入下一次循环

剔除这些不符合条件的数后,开始对数进行反转

可以使用依次取数的最低位,然后依次相加(相加后剔除原数的最低位),结束循环体条件为:依次相加最低为的数大于原来的数😋

//Num为暂存反转后的数,Value为要反转的数
while(Num < Value){
	Num =  (Num * 10);		//乘十进位
	Num += (Value % 10);	//加上最低位
	Value /= 10;			//舍弃最低位
}

最后判断Num和Value是否相等即可,但是有一个情况需要判断,因为奇数的位数不能被均分,如121,上文代码循环后Num = 12,Value = 1,所以Num要舍弃最低位,即Value /= 10😋

if(Value == Num || Value == Num / 10)	//True为此数是回文数,反之则否

📑运行源码:

package Project;

public class Universal {
        public static void main(String[] args) {
            for(int i = 0;i <= 1000;i++){
                if(i < 0 || (i % 10 == 0)) continue;
                int Num = 0,Value = i;
                while(Num < Value){
                    Num = (Num * 10);
                    Num += (Value %10);
                    Value /= 10;
                }
                if(Value == Num || Value == Num /10)
                    System.out.print(i + "、");
            }
        }
}