随机整数并输出最大及最小,统计每个数字出现的频率

创建一个随机整数生成器类RandomNumber.利用上述类生成50个100~145之间的随机整数并输出结果,输出其中的最大者及最小者,并统计大于100的整数个数,此外要... 创建一个随机整数生成器类RandomNumber.
利用上述类生成50个100~145之间的随机整数并输出结果,输出其中的最大者及最小者,并统计大于100的整数个数,此外要求统计每个数字出现的频率并输出;
利用上述类生成7个1~29之间各不相同的随机整数,升序后输出
展开
 我来答
citytalent
2008-06-12 · TA获得超过1222个赞
知道小有建树答主
回答量:542
采纳率:0%
帮助的人:578万
展开全部
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;

public class Test50 {// 测试类
public static void main(String[] args) {
Test1();//测试50个100-145的数字
System.out.println("--------------------------");
Test2();

}
private static void Test2(){//生成7个1-29不相同的数字
System.out.println("7个不同数字升序后为");
RandomNumber rn=new RandomNumber();
int[] ii=rn.ran2(7, 1, 29);//调用生成不重复数字的方法
Arrays.sort(ii);// 排序
for (int i = 0; i < ii.length; i++) {
System.out.println(ii[i]);
}
}

private static void Test1() {
RandomNumber rn = new RandomNumber();
int[] ii = rn.ran(50, 100, 145);// 生成50个,100到145的数字
for (int i = 0; i < ii.length; i++) {// 输出生成的50个数字
System.out.print(ii[i] + " ");
}
System.out.println();// 换个行
Arrays.sort(ii);// 排序
System.out.println("最小的:" + ii[0]);// 因为已经排序过了,所以最小的是数组第一个元素,最大的是最后一个
System.out.println("最大的:" + ii[ii.length - 1]);
int count = 0;// 计数器,统计大于100的个数
for (int i = 0; i < ii.length; i++) {
if (ii[i] > 100) {
count = count + 1;
}
}
System.out.println("大于100的数字有:" + count + "个");

Map map = new HashMap();// 以下开始统计每个数字出现的个数
for (int i = 0; i < ii.length; i++) {
int count2 = 0;
for (int j = 0; j < ii.length; j++) {
if (ii[i] == (ii[j])) {
count2 = count2 + 1;
}
}
// 为了不打印重复的,放入map中去掉重复的
map.put(ii[i], count2);
}
Set key = map.keySet();
for (Iterator iterator = key.iterator(); iterator.hasNext();) {
int name = Integer.parseInt(iterator.next().toString());
int count2 = Integer.parseInt(map.get(name).toString());
System.out.println(name + "出现 " + count2 + " 次");
}
}
}

class RandomNumber {// 数字生成器类,里面有2个方法,一个生成重复随机数ran,一个生成不重复的ran2
public int[] ran(int num, int bg, int end) {// num为要生成的数字个数,大小为从bg到end
Random ran = new Random();
int[] ii = new int[num];// 存放生成的数字
for (int i = 0; i < num; i++) {
ii[i] = ran.nextInt(end - bg + 1) + bg;// 举例子,100-145的数数字,那么end-bg+1就等于46,nextInt就是生成0-46之间,但是包括0,不包括46的正数也就是0-45,然后再加100就是100-145了
}
return ii;
}
public int[] ran2(int num, int bg, int end) {
Random ran = new Random();
Set set=new HashSet();//用于判断数字是否重复
int[] ii = new int[num];// 存放生成的数字
for (int i = 0; i < num; i++) {
ii[i] = ran.nextInt(end - bg + 1) + bg;
while(!set.add(ii[i])){//set里面的数字不可以重复,如果重复就返回false就重复执行本句重新生成数字
ii[i] = ran.nextInt(end - bg + 1) + bg;
}
}
return ii;
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式