用java写一段代码实现以下功能:便用Scanner类和正则表达式统一算英文中的单词,要求如一共出现了多少个单词有多少个互不相同的单·按单词出现频率大小输出单词
时间: 2023-06-27 22:05:55 浏览: 133
以下是使用Java实现统计英文单词并按出现频率排序的代码:
```java
import java.util.*;
public class WordCount {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String text = input.nextLine();
// 统计单词出现次数
Map<String, Integer> wordCount = new HashMap<>();
String[] words = text.split("\\W+");
for (String word : words) {
if (!wordCount.containsKey(word)) {
wordCount.put(word, 1);
} else {
wordCount.put(word, wordCount.get(word) + 1);
}
}
// 按出现次数排序
List<Map.Entry<String, Integer>> list = new ArrayList<>(wordCount.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue() - o1.getValue();
}
});
// 输出结果
System.out.println("总共出现了 " + words.length + " 个单词");
System.out.println("共有 " + wordCount.size() + " 个互不相同的单词");
System.out.println("按出现频率从高到低排序如下:");
for (Map.Entry<String, Integer> entry : list) {
System.out.println(entry.getKey() + " 出现了 " + entry.getValue() + " 次");
}
}
}
```
代码中,我们首先使用Scanner类获取用户输入的一段英文文本,然后使用正则表达式将文本分割成单词,并统计每个单词出现的次数。
接着,我们将单词出现次数存储到一个Map中,并使用Collections.sort()方法按照出现次数从高到低排序。最后,按照排序后的顺序输出结果,包括总共出现了多少个单词、共有多少个互不相同的单词,以及按出现频率从高到低排序的单词列表。
阅读全文