java 编写一个程序,读取个数不定的整数,然后查找其中出现频率最高的数字。当输入为0时,表示结束输入。例如,如果输入的数据是 29 7 8 3 6 6 -6 4 5 6 1 0,那么数字6的出现频率最高。如果出现频率最高的数字不止一个,则应该将它们全部输出。例如,在线性表9 30 3 9 3 2 4中,3和9都出现了两次,所以3和9都应该被输出
时间: 2024-02-23 17:00:00 浏览: 54
输入若干个整数,统计出现次数最多的那个整数。如果出现最多的整数有两个以上,打印最早输入的那个整数。
以下是Java实现该程序的代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Map<Integer, Integer> numMap = new HashMap<>();
int maxFreq = 0;
while (true) {
int n = input.nextInt();
if (n == 0) {
break;
}
if (!numMap.containsKey(n)) {
numMap.put(n, 1);
} else {
int freq = numMap.get(n) + 1;
numMap.put(n, freq);
if (freq > maxFreq) {
maxFreq = freq;
}
}
}
List<Integer> res = new ArrayList<>();
for (Map.Entry<Integer, Integer> entry : numMap.entrySet()) {
if (entry.getValue() == maxFreq) {
res.add(entry.getKey());
}
}
System.out.print("出现频率最高的数字是:");
for (int num : res) {
System.out.print(num + " ");
}
}
}
```
程序使用`java.util.Scanner`类来读取用户的输入,并使用`java.util.Map`类来存储输入的数字以及它们的出现频率。程序利用while循环,读取用户输入的整数,如果输入的是0,则跳出循环。然后,程序将该整数加入到`numMap`中,并更新`maxFreq`变量,以记录出现频率最高的数字的出现次数。
最后,程序遍历`numMap`,找出所有出现次数等于`maxFreq`的数字,并将它们添加到列表`res`中。最终输出`res`即可得到所有出现频率最高的数字。
阅读全文