我剛開始分配霍夫曼編碼。第一步是實現某種形式的文件處理,它將讀入要處理的文件,然後對字符進行頻率計數。閱讀文件並打印出字母頻率
我有幾個不同的文本文件,以測試這種對抗 - 有些是字母,數字,符號大寫,小寫等
這是我到目前爲止有:
import java.io.*;
public class LetterFrequency {
int nextChar;
char c;
public static void main(String[] args) throws IOException {
File txtfile = new File("10000random.txt");
BufferedReader in = new BufferedReader (new FileReader (txtfile));
System.out.println("Letter Frequency:");
int[] count = new int[26];
while ((nextChar = in.read()) != -1) {
ch = ((char) nextChar);
if (ch >= 'a' && ch <= 'z')
count[ch - 'a']++;
}
for (int i = 0; i < 26; i++) {
System.out.printf("%c %d", i + 'A', count[i]);
}
in.close();
}
這顯然是一個基本的版本(只是處理az),我將如何改變這個以包含所有大寫字母,數字,符號等。猜測數組的大小似乎不對。如果這是一個明顯的問題,我很抱歉,我還在學習! 謝謝
爲什麼不爲大寫,小寫,數字,符號等創建不同的數組? – rafid059
或者你可以使用地圖<字符,整數>來存儲這個,而不需要知道你遇到 – nafas
@nafas的字符,但不會保留字符的字典順序。 – rafid059