编写一个程序,接收用户输入的一个字符串(可以包含空格),统计其中所有出现过的所有字符,并按照频率高低的顺序排列输出。频率相同的字符按输入顺序输出。用java语言实现
时间: 2023-06-04 19:06:34 浏览: 195
好的,这个问题是一个计算问题,可以进行回答。以下是 Java 代码实现:
```
import java.util.*;
public class CharFrequency {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String str = input.nextLine();
// 统计字符出现频率
Map<Character, Integer> frequency = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (frequency.containsKey(c)) {
frequency.put(c, frequency.get(c) + 1);
} else {
frequency.put(c, 1);
}
}
// 将 Map.Entry 对象放入 List 中,方便排序
List<Map.Entry<Character, Integer>> freqList = new ArrayList<>(frequency.entrySet());
// 根据值进行排序,如果值相同,则根据输入顺序排序
Collections.sort(freqList, new Comparator<Map.Entry<Character, Integer>>() {
public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
if (o1.getValue().equals(o2.getValue())) {
return str.indexOf(o1.getKey()) - str.indexOf(o2.getKey());
} else {
return o2.getValue() - o1.getValue();
}
}
});
// 输出结果
for (Map.Entry<Character, Integer> entry : freqList) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}
```
这个程序可以接收用户输入的一个字符串,并且统计其中所有出现过的所有字符,并按照频率高低的顺序排列输出。频率相同的字符按输入顺序输出。
阅读全文