ハフマンエンコーディングの課題が始まりました。最初のステップは、処理されるファイルを読み込んで文字の頻度を計算する何らかの形式のファイル処理を実装することです。ファイルを読み込んで文字を出力する
私はに対してこれをテストするには、いくつかのテキストファイルを持っている - いくつかはここでは、文字、数字、記号、大文字、小文字など
ですが、私がこれまで持っているものです。
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();
}
これは明らかです基本バージョン(ちょうどaを扱う)、どのように大文字、数字、記号などをすべて含むようにこれを変更するのでしょうか?配列のサイズを推測する必要はないようです。
これは明白な質問である場合は謝罪、私はまだ学んでいます! は、あなたがそれらを小文字と同じようにカウントするようにしたい場合はソリューションです
なぜ大文字、小文字、数字、記号などの異なる配列を作成しないのですか? – rafid059
代わりにmapを使用して、 –
nafas
@nafasが出現する文字を知らなくてもこれを保存することができますが、文字は辞書順に保持されません。 – rafid059