黑马程序员技术交流社区
标题:
求教一个程序编写问题:
[打印本页]
作者:
@for
时间:
2014-7-23 21:23
标题:
求教一个程序编写问题:
随机生成50个数字(整数),每个数字的范围是[10, 50],统计每个数字出现的次数以及出现次数最多的数字与它的个数,最后将每个数字及其出现次数打印出来,如果某个数字出现次数为0,则不要打印它。打印时按照数字的升序排列。(只用集合,不用数组)
作者:
@for
时间:
2014-7-23 21:32
没有人在嘛,
作者:
icris
时间:
2014-7-23 22:09
public static void main(String[] args) {
ArrayList<Integer> arr = getArr();
Map<Integer, Integer> times = getTimes(arr);
printIt(times);
}
private static void printIt(Map<Integer, Integer> map) {
int n = 0;
for (Integer i : map.keySet()) {
int time = map.get(i);
System.out.println(i + ":" + time);
if (map.get(n) == null) {
n = i;
} else if (time > map.get(n)) {
n = i;
}
}
System.out.println("largest:\n"+n+":"+map.get(n));
}
private static Map<Integer, Integer> getTimes(ArrayList<Integer> arr) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Integer i : arr) {
if (map.get(i) == null) {
map.put(i, 1);
} else {
map.replace(i, map.get(i) + 1);
}
}
return map;
}
private static ArrayList<Integer> getArr() {
ArrayList<Integer> arr;
arr = new ArrayList<Integer>();
Random random = new Random();
for (int i = 0; i < 50; i++) {
int j = random.nextInt(41) + 10;
arr.add(j);
}
return arr;
}
复制代码
作者:
fantacyleo
时间:
2014-7-23 22:16
允许用Map么?允许的话就Map<数字,出现次数>。不允许的话定义一个类包含2个实例变量:数字int n和出现次数int count;
作者:
@for
时间:
2014-7-27 00:17
icris 发表于 2014-7-23 22:09
thanks。。。明白了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2