zoukankan      html  css  js  c++  java
  • 随机输入几个数,输出重复的数字和重复的次数

    1.用数组来输出重复的数字(不含重复的次数)

     1 public class Demo1 {
     2     public static int[] getArr(){
     3         Scanner sc = new Scanner(System.in);
     4         System.out.println("请输入数字的个数:");
     5         int sum = sc.nextInt();
     6         int[] arr = new int[sum];
     7         for(int i=0;i<arr.length;i++){
     8             System.out.println("请输入第"+(i+1)+"数:");
     9             arr[i] = sc.nextInt();
    10         }
    11         return arr;
    12     }
    13     public static int[] repeat(){
    14         int[] arr = getArr();
    15         Arrays.sort(arr); //将数组的中元素从小到大进行排序。
    16         int[] arr2 = {}; //再创建一个空数组,目的是用它来存储筛选出的重复数字
    17         for(int i=0;i<arr.length;i++){
    18             int count = 0; //用来记录数字重复的次数
    19             for(int j=0;j<arr.length;j++){
    20                 if(arr[i] == arr[j]){
    21                     count++;
    22                 }
    23             }
    24             if(count>1){ //arr[i]这个元素是重复的
    25                 //知识点:Arrays的copyOf()方法传回的数组是新的数组对象,改变传回数组中的元素值,不会影响原来的数组。
    26                 //copyOf()的第二个自变量指定要建立的新数组长度,如果新数组的长度超过原数组的长度,则保留数组默认值。
    27                 arr2 = Arrays.copyOf(arr2,arr2.length+1);
    28                 //将arr[i]这个元素存储到arr2数组的末尾
    29                 arr2[arr2.length-1] = arr[i];
    30                 i=i+count-1; //这是算法的灵魂,好好思考一下。
    31             }
    32         }
    33         return arr2;
    34     }
    35     public static void main(String[] args) {
    36         int[] arr2 = repeat();
    37         System.out.println("重复元素:");
    38         for (int a : arr2) {
    39             System.out.print(a+" ");
    40         }
    41     }
    42 }

     2.用List集合输出重复元素

    public class Demo2 {
        public static int[] getArr(){
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入数字的个数:");
            int sum = sc.nextInt();
            int[] arr = new int[sum];
            for(int i=0;i<arr.length;i++){
                System.out.println("请输入第"+(i+1)+"数:");
                arr[i] = sc.nextInt();
            }
            return arr;
        }
        public static List<Integer> repeat(){
            int[] arr = getArr();
            Arrays.sort(arr); 
            List<Integer> list = new ArrayList<>(); 
            for(int i=0;i<arr.length;i++){
                int count = 0; //用来记录数字重复的次
                for(int j=0;j<arr.length;j++){
                    if(arr[i] == arr[j]){
                        count++;
                    }
                }
                if(count>1){ 
                    list.add(arr[i]);
                    i=i+count-1; 
                }
            }
            return list;
        }
        public static void main(String[] args) {
            List<Integer> list = repeat();
            System.out.println("重复元素:");
            for (Integer a : list) {
                System.out.print(a+" ");
            }
        }
    }

    结果:

    3.用Map输出重复的数字和重复的次数

    public class Demo {
        public static int[] getArr(){
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入数字的个数:");
            int sum = sc.nextInt();
            int[] arr = new int[sum];
            for(int i=0;i<arr.length;i++){
                System.out.println("请输入第"+(i+1)+"数:");
                arr[i] = sc.nextInt();
            }
            return arr;
        }
        public static Map<Integer,Integer> repeat(){
            int[] arr = getArr();
            Map<Integer,Integer> map = new HashMap<>(); //集合是用来存储重复数字和重复的次数
            Arrays.sort(arr); //将数组的中元素从小到大进行排序。
            for(int i=0;i<arr.length;i++){
                int count = 0; //用来记录数字重复的次数
                for(int j=0;j<arr.length;j++){
                    if(arr[i] == arr[j]){
                        count++;
                    }
                }
                if(count>1){ //arr[i]这个元素是重复的
                    map.put(arr[i],count); //存储重复数字和重复的次数
                    i=i+count-1;
                }
            }
            return map;
        }
        public static void main(String[] args) {
            Map<Integer, Integer> map = repeat();
            System.out.println("-------------------------");
            for (Integer key : map.keySet()) {
                System.out.println("重复元素:"+key+" 次数:"+map.get(key));
            }
        }
    }

    结果:

  • 相关阅读:
    IOS开发银行系统的四舍五入的算法
    线程通信之初认识
    多线程同步机制练习之银行存钱
    解决线程安全问题方式三:loke锁
    使用同步机制解决单例模式中的懒汉式的线程安全问题
    (对于继承Thread类)线程安全问题解决方式二:同步静态方法
    (对于实现Runnable接口)线程安全问题解决方式二:同步方法
    (对于继承Thread类)线程安全问题解决方式一:同步代码块
    (对于实现Runnable接口)线程安全问题解决方式一:同步代码块
    三个窗口卖票(实现Runnable方式创建线程)之线程安全问题
  • 原文地址:https://www.cnblogs.com/yclss123/p/13407109.html
Copyright © 2011-2022 走看看