使用Scanner类和正则表达式统计一篇英文中的单词,要求如下: 统计一共出现了多少个
时间: 2023-06-07 22:08:21 浏览: 145
单词,每个单词出现的次数是多少?
对于这个问题,我可以给您一些思路和代码示例。首先,您需要使用Java中的Scanner类读取一篇英文文章,然后使用正则表达式匹配单词。以下是示例代码:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CountWords {
public static void main(String[] args) throws FileNotFoundException {
// 读取文件
Scanner scanner = new Scanner(new File("article.txt"));
// 定义统计单词的Map
Map<String, Integer> wordMap = new HashMap<String, Integer>();
// 定义单词匹配的正则表达式
String regex = "[a-zA-Z]+";
Pattern pattern = Pattern.compile(regex);
// 统计单词
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
String word = matcher.group().toLowerCase();
int count = wordMap.getOrDefault(word, 0);
wordMap.put(word, count + 1);
}
}
scanner.close();
// 打印统计结果
int total = wordMap.values().stream().mapToInt(Integer::intValue).sum();
System.out.println("总单词数:" + total);
System.out.println("单词出现次数如下:");
for (Map.Entry<String, Integer> entry : wordMap.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}
```
您可以将上面的代码保存为CountWords.java,并将英文文章保存为article.txt文件来进行测试。注意,英文文章中需要使用空格或其他符号分隔单词,否则统计结果可能会出现误差。
阅读全文