这个与排序没有关系,是算法问题。如果只是简单的相邻数的比较,是无法正确统计重复数字的个数的。
由于上个程序“超纲了”,那就在题主的代码基础上做一些改进,做到对重复数据的计数。这次使用纯数组方式实现,不会“超纲”了:import java.util.Scanner;
import java.util.Arrays;
public class RepeatCount{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int n = 0, m = 0;
//存储上次重复的数字
int lastRepeat = 0;
//输入数字个数
n = input.nextInt();
//输入数字
int[] array = new int[n];
for(int i = 0; i
array[i] = input.nextInt();
}
//将数字升序排列,排序后重复的数字会挨在一起
Arrays.sort(array);
//统计数组中重复的数字个数,与上次重复数字做比较,若不相同则为新的重复数字
for(int i = 0; i
if(array[i] == array[i + 1]){
if(lastRepeat != array[i]){
m++;
}
lastRepeat = array[i];
}
}
//输出重复的数字个数
System.out.println(m);
}
}
为方便理解,已给出注释,统计重复数字的算法再讲一下:上次重复的数字默认为0
数组相邻元素比较,若相同则为重复数字
若该重复数字与上次重复数字不同,则为新的重复数字,计数加一
更新上次重复数字