java题目:将1到100中的100个自然数随机的放到一个数组,从中获取重复次数最多并且最大的数,显示出来。
int size = 10;
int[] figures = new int[size];
int[] times = new int[size];
Random random = new Random();
for (int i = 0; i < figures.length; i++) {
figures[i] = random.nextInt(size) + 1;//产生1-size中的数字
System.out.print(figures[i] + ",");
}
System.out.println("\n升序排序后");
Arrays.sort(figures);
int num = figures[0];//取出升序后的第一个元素与之后的元素进行比较
System.out.print(figures[0] + ",");
int cishu = 1;
for (int i = 1; i < figures.length; i++) {
System.out.print(figures[i] + ",");
if (num == figures[i]) {
cishu++;
times[figures[i] - 1] = cishu;//设置该元素的下表和出现的次数
} else {
cishu = 1;
}
num = figures[i];
}
System.out.println();
cishu = times[0];
num = 0;
for (int i = 1; i < times.length; i++) {
if (cishu <= times[i]) {
cishu = times[i];
num = i;
}
}
System.out.println((num + 1) + "出现次数最多" + cishu + "次");
思路:
循环size个1到size之间(包括1和size)的数字保存在数组中
使用Arrays.sort()函数 使数组升序排序
依次比较大小,并将数字作为下标(数字-1),出现次数作为值存到另一数组中,
将另一数组中最大值(次数)输出,下标+1即为数字
描述的不好,请见谅
figures[i] = random.nextInt(100);//生成随机数
times[figures[i]] ++; //增加随机数出现的次数。
这里实际上利用了数组的长度,假设100个随机数都是50,代码就成了
figures[i] = 50;
(times[figures[i]] = times[50])
times[50]++;
到最后结果是figures数组里的数字全是50,times数组里第50个(实际上是第51个,数组下标从0开始)数的值为100,也就是说50这个数字出现了100次
看的头晕死了,代码还有问题