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)); } } }
结果: