Java-统计一段文字中的单词个数并按单词的字母顺序排序后输出 分数 10 作者 郑如滨 单位 集美大学 现需要统计若干段文字(英文)中的不同单词数量。 如果不同的单词数量不超过10个,则将所有单词输出(按字母顺序),否则输出前10个单词。 注1:单词之间以空格(1个或多个空格)为间隔。 注2:忽略空行或者空格行。 注3:单词大小写敏感,即'word'与'WORD'是两个不同的单词 。 输入说明 若干行英文,最后以!!!!!为结束。 输出说明 不同单词数量。 然后输出前10个单词(按字母顺序),如果所有单词不超过10个,则将所有的单词输出。
时间: 2024-03-20 14:40:48 浏览: 344
c语言程序统计英语文章中的单词出现不同的单词
4星 · 用户满意度95%
以下是Java代码实现:
```java
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String text = "";
while (sc.hasNextLine()) {
String line = sc.nextLine().trim();
if (line.equals("!!!!!")) {
break;
}
text += line + " ";
}
String[] words = text.split("\\s+");
Map<String, Integer> wordCount = new TreeMap<>();
for (String word : words) {
if (!word.isEmpty()) {
wordCount.put(word, wordCount.getOrDefault(word, 0) + 1);
}
}
int count = wordCount.size();
System.out.println(count);
if (count <= 10) {
for (String word : wordCount.keySet()) {
System.out.println(word);
}
} else {
int i = 0;
for (String word : wordCount.keySet()) {
if (i >= 10) {
break;
}
System.out.println(word);
i++;
}
}
}
}
```
代码思路:
1. 读入多行英文文本,直到读入“!!!!!”为止,将所有行拼接成一个字符串。
2. 对字符串使用正则表达式分割,得到一个单词数组。
3. 遍历单词数组,使用一个 TreeMap 统计每个单词出现的次数。
4. 输出不同单词数量。
5. 如果不同单词数量不超过10个,就遍历 TreeMap 输出所有单词。
6. 如果不同单词数量超过10个,就遍历 TreeMap 输出前10个单词。
阅读全文