java:任意位数的回文数的连续判定与输出

  1. 算法思想
    偶数位数的回文数和奇数位数的回文数不同 , 可以做俩个方法来实现回文数的判定,借组数组来实现回文数的输入输出 ,.
  2. 代码如下
package com.itheima.kuihuabaodian;
import java.util.Scanner;
public class Test02 {
    public static void main(String[] args) {
        Scanner num = new Scanner(System.in);

        while (true){  // 持续的输出判定
            System.out.println("请输入回文数的位数( 输入 0 退出):");
            int a=num.nextInt();
            if(a==0)
                break;
            if(a%2==0){
                System.out.println("回文数共有"+huiWenO(a)+"位");
            }else {
                System.out.println("回文数共有"+huiWenJ(a)+"位");
            }
        }

    }
    //对 n 为奇数位数的返回其回文数
    public static int huiWenJ(int n){
        int a=1,b=10;
        int[] arr1=new int[n];
        int numHuiWen=0;
        //产生回文数的n位数的区间
        for(int i=1;i<n;i++){
            a*=10;
            b*=10;
        }
        for (int i=a;i<b;i++){
            int count=0;
            int temp=i;
            //当输入数值n为奇数位时执行如下操作
            if(n%2!=0){
                // 对i取每一位数的值,将i的最高位赋值给数组的最小索引值
                //将i的最低位赋值给数值的索引的最大值
                for(int j=n-1;j>-1;j--){
                   if (temp>9){
                       arr1[j]=temp%10;
                       temp/=10;
                   } else{
                       arr1[j]=temp;
                   }
                }
                // 如果数组值满足回文数的特征则输出
                    int k=n/2;
                for(int m=1;m<=n/2;m++){
                    if(arr1[k-m]==arr1[k+m]){
                        count++;
                    }
                }
                if(count==n/2){
                    System.out.println("回文数为:"+i);
                    numHuiWen++;
                }
            }

        }
        return numHuiWen;
    }
    //对 n 为偶数时返回回文数
    public static int huiWenO(int n){
        int a=1,b=10;
        int[] arr1=new int[n];
        int numHuiWen=0;
        //产生回文数的n位数的区间
        for(int i=1;i<n;i++){
            a*=10;
            b*=10;
        }
        for (int i=a;i<b;i++){
            int count=0;
            int temp=i;
            //当输入数值n为奇数位时执行如下操作
            if(n%2==0){
                // 对i取每一位数的值,将i的最高位赋值给数组的最小索引值
                //将i的最低位赋值给数值的索引的最大值
                for(int j=n-1;j>-1;j--){
                    if (temp>9){
                        arr1[j]=temp%10;
                        temp/=10;
                    } else{
                        arr1[j]=temp;
                    }
                }
                // 如果数组值满足回文数的特征则输出
                for(int m=0;m<n/2;m++){
                    if(arr1[m]==arr1[n-m-1]){
                        count++;
                    }
                }
                if(count==n/2){
                    System.out.println("回文数为:"+i);
                    numHuiWen++;
                }
            }
        }
        return numHuiWen;
    }
}

代码输出:
		"D:\IDEA\IntelliJ IDEA 2019.3.3\jbr\bin\java.exe" "-javaagent:D:\IDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=52950:D:\IDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath D:\IDEA\IDEAcode\baseclass\out\production\day06code com.itheima.kuihuabaodian.Test02
		请输入回文数的位数( 输入 0 退出):
		3
		回文数为:101
		回文数为:111
		回文数为:121
		回文数为:131
		回文数为:141
		回文数为:151
		回文数为:161
		回文数为:171
		回文数为:181
		回文数为:191
		回文数为:202
		回文数为:212
		回文数为:222
		回文数为:232
		回文数为:242
		回文数为:252
		回文数为:262
		回文数为:272
		回文数为:282
		回文数为:292
		回文数为:303
		回文数为:313
		回文数为:323
		回文数为:333
		回文数为:343
		回文数为:353
		回文数为:363
		回文数为:373
		回文数为:383
		回文数为:393
		回文数为:404
		回文数为:414
		回文数为:424
		回文数为:434
		回文数为:444
		回文数为:454
		回文数为:464
		回文数为:474
		回文数为:484
		回文数为:494
		回文数为:505
		回文数为:515
		回文数为:525
		回文数为:535
		回文数为:545
		回文数为:555
		回文数为:565
		回文数为:575
		回文数为:585
		回文数为:595
		回文数为:606
		回文数为:616
		回文数为:626
		回文数为:636
		回文数为:646
		回文数为:656
		回文数为:666
		回文数为:676
		回文数为:686
		回文数为:696
		回文数为:707
		回文数为:717
		回文数为:727
		回文数为:737
		回文数为:747
		回文数为:757
		回文数为:767
		回文数为:777
		回文数为:787
		回文数为:797
		回文数为:808
		回文数为:818
		回文数为:828
		回文数为:838
		回文数为:848
		回文数为:858
		回文数为:868
		回文数为:878
		回文数为:888
		回文数为:898
		回文数为:909
		回文数为:919
		回文数为:929
		回文数为:939
		回文数为:949
		回文数为:959
		回文数为:969
		回文数为:979
		回文数为:989
		回文数为:999
		回文数共有90位
		请输入回文数的位数( 输入 0 退出):
		2
		回文数为:11
		回文数为:22
		回文数为:33
		回文数为:44
		回文数为:55
		回文数为:66
		回文数为:77
		回文数为:88
		回文数为:99
		回文数共有9位
		请输入回文数的位数( 输入 0 退出):
		0
		
		Process finished with exit code 0
  1. 分析
    无.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值