用就java编写一个程序,接收用户输入的一个字符串(可以包含空格),统计其中所有出现过的所有
时间: 2024-06-01 10:09:25 浏览: 122
单词的出现次数,并按照出现次数从大到小输出所有单词及其出现次数。可以假定输入的字符串只包含大小写字母和空格,单词之间用一个或多个空格隔开。例如,对于字符串 "this is a test sentence is a test",应该输出:
is 2
a 2
test 2
this 1
sentence 1
请注意,输出时每个单词一行,单词和出现次数之间用一个空格隔开。输出的单词不需要有特定的顺序,只需要按照出现次数从大到小排序即可。
代码:
import java.util.*;
public class WordCount {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine().toLowerCase(); // 全部转换为小写
String[] words = input.split("\\s+"); // 以空格为分隔符分割字符串
Map<String, Integer> wordCount = new HashMap<>(); // 用 HashMap 统计单词出现次数
for (String word : words) {
if (wordCount.containsKey(word)) { // 如果单词已经出现过,对应的值加 1
wordCount.put(word, wordCount.get(word) + 1);
} else { // 如果单词是第一次出现,将其加入 HashMap,并将对应的值设置为 1
wordCount.put(word, 1);
}
}
List<Map.Entry<String, Integer>> list = new ArrayList<>(wordCount.entrySet()); // 将 HashMap 转换为 List
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { // 对 List 进行排序
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue()); // 按照值(即出现次数)由大到小排序
}
});
for (Map.Entry<String, Integer> entry : list) { // 输出结果
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
}
阅读全文