提示用户输入的一个长度8位正整数数字 , 我们来统计这个数字中的每一位上出现的数字的重复次数 :

  

提示用户输入的一个长度8位正整数数字 , 我们来统计这个数字中的每一位上出现的数字的重复次数 :
 例如:     11223344    
 里面出现了两个1 , 两个2 两个3 两个4   
 如何取出每一位的数字:     int a = 11223344    
个位数: a%10;        a = a/10;   
 十位数: a%10;        a = a/10;  
  百位数: a%10;        a = a/10;  
  千位数: a%10;
import java.util.Scanner;
public class Demo1{
    public static void main(String[] args){
        System.out.println("请输入一个小于21亿的数字:");
        Scanner input = new Scanner(System.in);
        //用户输入的数字 1    1     2   2
        int number = input.nextInt();
        int[] arr = new int[10];
        int maxIndex = 0;
        for(int i=0;;i++){
            arr[i] = number%10;
            number /= 10;
            if(number==0){  
                //当循环准备退出时, 将当前存储的下标(也就是最大有效数据下标存储到这个变量maxIndex上)
                maxIndex = i;
                break;
            }
        }
        //--------------------

        for(int i=0;i<=maxIndex;i++){
            System.out.print(arr[i]+" , ");
        }   
        //----------------------------

        //1.    存储位数上的数字 (保证不重复)
        int[] arr2 = new int[arr.length];
        //2.    存储与上述数组对应的次数
        int[] arr3 = new int[arr.length];
        //3.    arr2中存储到了哪个下标的标记
        int arr2Index = 0;

        for(int i=0;i<=maxIndex;i++){
            /*判断arr[i],也就是当前进行比较的数字, 是否再arr2这个数组中存在*/
            //用来表示下个比较的循环结果, 如果循环找到了相同的则表示false
            boolean flag = true;

            for(int j=0;j<arr2Index;j++){
                if(arr[i]==arr2[j]){
                    flag = false;
                }
            }

        //---------------------------------------
            if(flag){
                //表示从未比较过此数字
                arr2[arr2Index] = arr[i];
                arr3[arr2Index] = 1;
                arr2Index++;


                for(int j=i;j<arr.length-1;j++){
                    if(arr[i]==arr[j+1]){
                        //如果相同表示i坐标存在相同的数字
                        arr3[arr2Index-1]+=1;
                        //System.out.println("寻找到一个相同的:"+arr[i]);
                    }
                }



            }else{
                //表示这个数字 再arr2数组中存在, 无需再进行比较
            }
        }
        System.out.println();
        for(int i=0;i<arr2Index;i++){
            System.out.print("数字:"+arr2[i]+"出现了"+arr3[i]+"次,");
        }


    }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值