回文数的判断

java回文

java实现回文的几种方法

1.逆转数字

如输出3中位发所有回文数

1.为了实现遍历所有三位数,使用for循环

2.将三位数的百位、十位、个位单独分离出来

3.将百位乘以100+十位乘以10+百位赋值给一个新变量,实现三位数逆转

4.将新的三位数与原数比较,如果相等则为回文数

public class Test {
    public static void main(String[] args) {
        for (int i = 100; i < 1000; i++) {
            //1.分离百位、十位、个位
            int baiwei = i/100;
            int shiwei = i/10%10;
            int gewei = i%10;
            //2.建立一个变量a,将个位*100+十位乘以10+百位*1赋值给变量a

            int a = gewei*100+shiwei*10+baiwei;
            //3.如果逆转侯的a==原来的数值,那么就是回文,输出
            if(a == i){
                System.out.println(i);
            }
        }
    }
}

2.对称实现

例子同样为输出3三位数中的所有回文数

1.为了实现遍历三位数,使用for循环

2.因为是三位数,只用考虑百位和个位是否相等。例:191,只用考虑9前面和9后面是佛相等(如果是偶数位,则考虑前面一半是否和后面一半相等),相等则为回文数

public class Test {
    public static void main(String[] args) {
		
		//1.for循环实现100-999的循环查找
		for(int i= 1 ; i <= 999 ; i++){
            	
            	//2.分离百位个个位
				int baiwei = i/100;
				int gewei = i%10;
            	//3.判断是否相等,相等则为回文数
				if(baiwei == gewei)
					System.out.println(i);
			}
		}			      
    }
}

思考:

前面两种方法的本质都是分离位数,都要知道是几位才还分离,

但如果是获取从控制台输入,且位数不固定,也可以通过用while循环实现位数判定,,之后还有根据几位来分离位数,太麻烦,那有没有更简单的办法呢?

3.将int型转换为String型,然后逆转字符串,判断是否相等

用stringBuffer或者stringBuilder自带的reverse方法

1.为了从控制台获得任意位数数字,创建Scanner对象,并创建int整型变量接收

2.将数值+""赋值给字符串变量实现,整型转化成字符型变量

3.调用StringBuilder的reverse()方法,实现字符串反转

4.使用String的equals方法判断两字符串是否相等

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数字:");
        int num = scanner.nextInt();
        //将数值+""赋值给字符串变量实现,整型转化成字符型变量
        String str = num + "";
        //逆转字符串
        String str1 = new StringBuffer(str).reverse().toString();
        //字符串内置的判断相等方法
        if(str1.equals(str)){
            System.out.println("该数字是回文数!");
        }else {
            System.out.println("该数字不是回文数!");
        }
    }
}

这样通过将数转换为字符串,在将字符串饭转在判断的方法,即可实现任意位数的回文数的判断。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值