首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

用java集合框架编写程序统计输入数字的频率,该怎么处理

2012-04-15 
用java集合框架编写程序统计输入数字的频率编写一个程序,读取个数不定的整数,然后查找其中出现频率最高的

用java集合框架编写程序统计输入数字的频率
编写一个程序,读取个数不定的整数,然后查找其中出现频率最高的数字,当输入0时,表示结束输入,例如,如果输入的数据是
 2 3 40 3 5 4 -3 3 3 2 0 ,那么数字3的出现频率是最高的。请一次输入一个数字。如果出现频率最高的数字不止一个而是多个,则应该将它们全部输出。例如,在线性表9 30 3 9 3 2 4 0,3和9都出现了两次,所以,3和9都应该被报告。

[解决办法]
for example

Java code
Map<Integer, Integer> map = new HashMap<Integer, Integer>();Scanner sc = new Scanner(System.in);int num = 0;while (true) {    System.out.printf("please input a number([0] to exit): ");     try {        num = Integer.parseInt(sc.nextLine());        if (num == 0) break;    } catch (Exception e) {        System.out.println("error input, input again.");        continue;    }    if (map.containsKey(num)) {        map.put(num, map.get(num)+1);    } else {        map.put(num, 1);    }}List<Entry<Integer, Integer>> list = new ArrayList<Entry<Integer, Integer>>(map.entrySet());Collections.sort(list, new Comparator<Entery<Integer, Integer>>() {    compare(Entry<Integer, Integer> e1, Entry<Integer, Integer> e2) {        return e2.getValue().compareTo(e1.getValue());    }});int max = list.get(0).getValue();for (EntrySet<Integer, Integer> e : list) {    if (e.getValue() == max) {        System.out.printf("num=%d, times=%d\n", e.getKey(), e.getValue());    }} 

热点排行