java:将1到100中的100个自然数随机的放到一个数组,从中获取重复次数最多并且最大的数,显示出来

2024-12-22 13:05:02
推荐回答(4个)
回答1:

写了一个显示重复次数最多的最大数字。不过感觉实现的方法不是很好,不知哪位强人能深入优化一下。

输出的结果

最大值:100
重复数目最多7出现了3次
重复数目最多15出现了3次
重复数目最多28出现了3次
重复数目最多30出现了3次
重复数目最多38出现了3次
重复数目最多51出现了3次
重复数目最多50出现了3次
重复数目最多69出现了3次
重复数目最多90出现了3次
重复数目最多99出现了3次
重复最多的最大值:99

代码

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class Random {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
int[] i=new int[100];
for(int n=0;ni[n]=(int)(Math.random()*100+1);
System.out.println(i[n]);
}
int max=-1;
Map m=new HashMap();
for(int n=0;nif(maxmax=i[n];
}
Object o=m.get(i[n]);
if(o==null){
m.put(i[n], 1);
}else{
int t=m.get(i[n])+1;
m.put(i[n], t);
}
}
int maxtimes=0;
ArrayList timenum=new ArrayList();
Iterator> it=m.entrySet().iterator();
while(it.hasNext()){
Entry entry=it.next();
System.out.println(entry.getKey()+":"+entry.getValue());

if(maxtimes maxtimes=entry.getValue();
timenum=new ArrayList();
timenum.add(entry.getKey());
}else if(maxtimes==entry.getValue()){
timenum.add(entry.getKey());

}

}

System.out.println("最大值:"+max);
int maxtt=-1;
for(int u=0;u if(maxtt maxtt=timenum.get(u);
}
System.out.println("重复数目最多"+timenum.get(u)+"出现了"+maxtimes+"次");
}
System.out.println("重复最多的最大值:"+maxtt);
}
}

回答2:

你这个题有问题,重复次数最多不一定是最大
你的意思是不是如果有两个重复次数一样多的就显示比较大的?还是既显示重复次数最多的数也显示最大的数?
总之重复次数最多并且最大这个有毛病

回答3:

public class TestRandom {
public static void main(String[] args) {
int[] a = new int[100];
for(int i=1;i<=100;i++){
int temp = (int)(Math.random()*100)+1;
System.out.print(temp+" ");
a[temp-1]++;
}
System.out.println();
int t = 0;
int k = 0;
for(int i = 0;i<100;i++){
if(a[i]>=t){
t = a[i];
k=i;
}

}
System.out.println("出现最大且最多的数字是"+(k+1));
System.out.println("它出现了"+t+"次");

}
}

回答4:

这个会有答案吗