读取文件内容,并对信息进行统计和整理: 1) “四级常用单词.txt”中记录了常用的3000多个单词,请统计该文档中所有英文字母(a-z,可不区分大小写)出现的次数和频率,并将统计结果按照字母出现频率由高到低排序后输出到目标文件“result.txt”中。 2) 说明: ① “四级常用单词.txt”的编码方式为UTF-8; ② 可用字符流读取,并用数组进行统计; ③ 只统计独立出现的单词,例如: 在上述一行中,只统计absolutely这个单词,单词的音标以及后面的词性ad.不纳入统计结果。Java语言编译
时间: 2024-02-11 22:06:08 浏览: 193
以下是Java语言的代码实现,可以读取“四级常用单词.txt”文件中的内容并统计每个字母出现的次数和频率,并将结果按照频率由高到低排序后输出到“result.txt”文件中。
```
import java.io.*;
import java.util.*;
public class WordCount {
public static void main(String[] args) {
try {
// 读取文件
File file = new File("四级常用单词.txt");
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader br = new BufferedReader(isr);
// 统计字母出现次数
int[] count = new int[26];
String line;
while ((line = br.readLine()) != null) {
line = line.toLowerCase(); // 统一转换为小写字母
for (int i = 0; i < line.length(); i++) {
char c = line.charAt(i);
if (c >= 'a' && c <= 'z') {
count[c - 'a']++;
}
}
}
br.close();
// 计算字母出现频率
int total = 0;
for (int i = 0; i < 26; i++) {
total += count[i];
}
double[] freq = new double[26];
for (int i = 0; i < 26; i++) {
freq[i] = (double) count[i] / total;
}
// 按照频率排序
List<Character> list = new ArrayList<>();
for (char c = 'a'; c <= 'z'; c++) {
list.add(c);
}
Collections.sort(list, new Comparator<Character>() {
@Override
public int compare(Character c1, Character c2) {
return Double.compare(freq[c2 - 'a'], freq[c1 - 'a']);
}
});
// 输出结果到文件
FileWriter fw = new FileWriter("result.txt");
for (int i = 0; i < 26; i++) {
char c = list.get(i);
fw.write(c + ": " + count[c - 'a'] + " (" + String.format("%.2f", freq[c - 'a'] * 100) + "%)\n");
}
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
该程序首先读取“四级常用单词.txt”文件中的内容,然后遍历每个字符统计每个字母出现的次数。统计完毕后,根据出现次数计算每个字母出现的频率,并按照频率从高到低排序。最后将结果输出到“result.txt”文件中。
阅读全文