请帮助我解决这个问题。我正在尝试编写一个读取.txt文件的代码,然后它将计算文件中每个字母的频率。这是我想出的:
public static void charCount(String file) throws IOException {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
int[] count = new int[26];
String line;
while ((line = br.readLine()) != null) {
line = line.toUpperCase();
char[] characters = line.toCharArray();
for (int i = 0; i < line.length(); i++) {
if ((characters[i] >='A') && (characters[i] <='Z')) {
count[characters[i] - 'A']++;
}
}
}
File file2 = new File("D:/Project/Aufgabe/Winter_2019/frequency.txt");
file2.createNewFile();
FileWriter fw = new FileWriter(file2);
for (int i = 0; i < 26; i++) {
fw.write(((char)(i + 'A')) + ": " + count[i]);
}
fw.close();
br.close();
}
[当我尝试使用System.out.println()在控制台中打印结果时,它会给出以下结果:
A: 15
B: 4
C: 9
D: 10
E: 2
F: 1
G: 0
H: 3
I: 5
J: 6
K: 3
L: 0
M: 2
N: 7
O: 3
P: 1
Q: 1
R: 0
S: 4
T: 0
U: 2
V: 0
W: 5
X: 0
Y: 1
Z: 0
我想要的是什么。但是,当我尝试将其写入文件时,它将在.txt文件中提供这些结果:
㩁ㄠ䈵›䌴›䐹›〱㩅㈠㩆ㄠ㩇〠㩈㌠㩉㔠㩊㘠㩋㌠㩌〠㩍㈠㩎㜠㩏㌠㩐ㄠ㩑ㄠ㩒〠㩓㐠㩔〠㩕㈠㩖〠㩗㔠㩘〠㩙ㄠ㩚〠
我对Java还是很陌生,因此非常感谢您的帮助。
更改此行fw.write((((char)(i +'A')))+“:” + count [i]);
to
fw.write(“” +((char)(i +'A'))+“:” + count [i]);