设计一个Java程序,完成:统计一个文本文件中每一个汉字出现的频率。 文本文件data.txt内容如下(例如): 计算机计算真的很快 统计结果写入文本文件result.txt中,如结果如下(按原来的汉字在文本文件中出现的次序输出): (计,2)(算,2)(机,1)(真,1)(的,1)(很,1)(快,1)
时间: 2023-10-11 07:05:39 浏览: 37
好的,以下是Java程序的实现:
```java
import java.io.*;
import java.util.*;
public class ChineseCharacterFrequency {
public static void main(String[] args) {
try {
// 读取文本文件
BufferedReader reader = new BufferedReader(new FileReader("data.txt"));
String line = reader.readLine();
StringBuilder builder = new StringBuilder();
while (line != null) {
builder.append(line);
line = reader.readLine();
}
reader.close();
// 统计每个汉字出现的次数
Map<Character, Integer> map = new HashMap<>();
char[] chars = builder.toString().toCharArray();
for (char c : chars) {
if (isChineseCharacter(c)) {
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
} else {
map.put(c, 1);
}
}
}
// 将结果按汉字在文本中出现的次序输出
BufferedWriter writer = new BufferedWriter(new FileWriter("result.txt"));
for (char c : chars) {
if (isChineseCharacter(c) && map.containsKey(c)) {
writer.write("(" + c + "," + map.get(c) + ")");
map.remove(c);
}
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 判断是否为汉字
private static boolean isChineseCharacter(char c) {
return String.valueOf(c).matches("[\u4E00-\u9FA5]");
}
}
```
程序的核心就是使用Map来统计每个汉字出现的次数,并按照汉字在文本中出现的次序输出结果。其中,isChineseCharacter()方法用来判断一个字符是否为汉字。
最后,将程序保存为ChineseCharacterFrequency.java文件,然后在命令行中编译并运行代码即可。
阅读全文