编写一个程序,接收用户输入的一个字符串(可以包含空格),统计其中所有出现过的所有字符,并按照频率高低的顺序排列输出。频率相同的字符按输入顺序输出。java实现
时间: 2023-03-25 16:03:51 浏览: 76
以下是 Java 代码实现:
import java.util.*;
public class CharFrequency {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String input = scanner.nextLine();
Map<Character, Integer> frequencyMap = new HashMap<>();
for (int i = ; i < input.length(); i++) {
char c = input.charAt(i);
if (frequencyMap.containsKey(c)) {
frequencyMap.put(c, frequencyMap.get(c) + 1);
} else {
frequencyMap.put(c, 1);
}
}
List<Map.Entry<Character, Integer>> list = new ArrayList<>(frequencyMap.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>() {
@Override
public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
if (o1.getValue().equals(o2.getValue())) {
return input.indexOf(o1.getKey()) - input.indexOf(o2.getKey());
} else {
return o2.getValue() - o1.getValue();
}
}
});
System.out.println("按照频率高低的顺序排列输出:");
for (Map.Entry<Character, Integer> entry : list) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}
输入示例:
请输入一个字符串:hello world
输出示例:
按照频率高低的顺序排列输出:
l:3
o:2
e:1
h:1
d:1
r:1
w:1
空格:1
阅读全文