这是一个编程问题,要求编写一个使用map集合的treemap类程序。读取一个不定的整数,然后查找其中出现频率最高的数字。当输入为0时,程序结束并显示结果。
时间: 2024-05-11 13:17:53 浏览: 93
输入一些整数,编程计算并输出其中所有正数的和,输入负数时不累加,继续输入下一个数 输入零时,表示输入数据结束 要求最后统计出累加的项数
5星 · 资源好评率100%
以下是一个使用 TreeMap 实现的示例代码,可以实现你所描述的功能:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
TreeMap<Integer, Integer> map = new TreeMap<>();
int maxFreq = 0, maxNum = 0;
while (true) {
int num = scanner.nextInt();
if (num == 0) break;
int freq = map.getOrDefault(num, 0) + 1;
map.put(num, freq);
if (freq > maxFreq) {
maxFreq = freq;
maxNum = num;
}
}
System.out.printf("出现频率最高的数字是 %d,出现了 %d 次。", maxNum, maxFreq);
}
}
```
代码解释:
首先创建一个 TreeMap 对象 `map`,用于存储数字与出现次数的对应关系。同时定义两个变量 `maxFreq` 和 `maxNum`,用于记录出现频率最高的数字和出现次数。
然后进入一个循环,每次读入一个数字,如果读入的数字为 0,则跳出循环。否则,使用 `getOrDefault()` 方法获取数字在 `map` 中出现的次数,然后加 1,并将更新后的次数存回 `map` 中。如果更新后的次数大于 `maxFreq`,则更新 `maxFreq` 和 `maxNum`。
最后输出结果。
阅读全文