读取文件内容,并对信息进行统计和整理: 1) “四级常用单词.txt”中记录了常用的3000多个单词,请统计该文档中所有英文字母(a-z,可不区分大小写)出现的次数和频率,并将统计结果按照字母出现频率由高到低排序后输出到目标文件“result.txt”中。 2) 说明: ① “四级常用单词.txt”的编码方式为UTF-8; ② 可用字符流读取,并用数组进行统计; ③ 只统计独立出现的单词,使用语言Java
时间: 2024-02-09 07:13:00 浏览: 182
好的,我会按照您的要求完成这个任务。下面是代码实现:
```java
import java.io.*;
import java.util.*;
public class WordCount {
public static void main(String[] args) {
// 统计英文字母出现次数
Map<Character, Integer> countMap = new HashMap<>();
try {
FileInputStream fis = new FileInputStream("四级常用单词.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
int c;
while ((c = isr.read()) != -1) {
char ch = (char) c;
if (Character.isLetter(ch)) { // 只统计英文字母
ch = Character.toLowerCase(ch); // 统一转换为小写字母
countMap.put(ch, countMap.getOrDefault(ch, 0) + 1);
}
}
isr.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
// 按照字母出现频率排序
List<Map.Entry<Character, Integer>> list = new ArrayList<>(countMap.entrySet());
list.sort((o1, o2) -> o2.getValue() - o1.getValue());
// 输出结果到文件
try {
FileWriter fw = new FileWriter("result.txt");
for (Map.Entry<Character, Integer> entry : list) {
fw.write(entry.getKey() + " " + entry.getValue() + " " +
String.format("%.2f%%", (double) entry.getValue() / list.size() * 100) + "\n");
}
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
运行程序后,会在同级目录下生成一个名为“result.txt”的文件,其中记录了按照英文字母出现频率由高到低排序后的统计结果。
阅读全文