随机输入几个数,输出重复的数字和重复的次数

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));
        }
    }
}

结果:

原文地址:https://www.cnblogs.com/yclss123/p/13407109.html