编写一个程序,读取个数不定的整数,然后查找其中出现频率最高的数字。当输入为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 10:01:49 浏览: 22
好的,这是一个很好的练习题目。以下是一个可能的Java程序实现:
```
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<Integer, Integer> frequencyMap = new HashMap<>();
int maxFrequency = 0;
// 读取整数,统计频率
while (true) {
int num = scanner.nextInt();
if (num == 0) break;
int frequency = frequencyMap.getOrDefault(num, 0) + 1;
frequencyMap.put(num, frequency);
if (frequency > maxFrequency) maxFrequency = frequency;
}
// 输出出现频率最高的数字
for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()) {
if (entry.getValue() == maxFrequency) {
System.out.print(entry.getKey() + " ");
}
}
}
}
```
这个程序使用了Java的Map数据结构来统计数字出现的频率。具体来说,它使用一个HashMap来存储每个数字出现的频率,其中键为数字,值为出现次数。在读取每个数字时,程序会检查这个数字是否已经在Map中出现过,如果出现过,就将它的出现次数加一,否则将它的出现次数设为1。同时,程序还会记录出现频率的最大值,以便后续输出。
在读取完所有数字后,程序会遍历Map中的所有键值对,找出出现频率等于最大值的数字,并将它们输出。请注意,这个程序是可以处理多个数字出现频率相同的情况的,因为它会将所有出现频率等于最大值的数字都输出。