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

如题所述

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

输出的结果

最大值: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;n<i.length;n++){
i[n]=(int)(Math.random()*100+1);
System.out.println(i[n]);
}
int max=-1;
Map<Integer, Integer> m=new HashMap<Integer, Integer>();
for(int n=0;n<i.length;n++){
if(max<i[n]){
max=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<Integer> timenum=new ArrayList<Integer>();
Iterator<Map.Entry<Integer, Integer>> it=m.entrySet().iterator();
while(it.hasNext()){
Entry<Integer, Integer> entry=it.next();
System.out.println(entry.getKey()+":"+entry.getValue());

if(maxtimes<entry.getValue()){
maxtimes=entry.getValue();
timenum=new ArrayList<Integer>();
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<timenum.size();u++){
if(maxtt<timenum.get(u)){
maxtt=timenum.get(u);
}
System.out.println("重复数目最多"+timenum.get(u)+"出现了"+maxtimes+"次");
}
System.out.println("重复最多的最大值:"+maxtt);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-18
你这个题有问题,重复次数最多不一定是最大
你的意思是不是如果有两个重复次数一样多的就显示比较大的?还是既显示重复次数最多的数也显示最大的数?
总之重复次数最多并且最大这个有毛病追问

课本就是这么说的,我也怀疑

第2个回答  2012-11-18
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+"次");

}
}本回答被提问者采纳
第3个回答  2012-11-18
这个会有答案吗追问

不知道,