Я только начинаю задание по кодировке Хаффмана. Первый шаг - реализовать некоторую форму обработки файлов, которая будет считываться в обрабатываемом файле, а затем выполнять подсчет частоты символов.Прочитать в файле и распечатать частоту письма
У меня есть несколько различных текстовых файлов, чтобы проверить это против - некоторые буквы, цифры, символы, прописные буквы, строчные буквы и т.д.
Вот то, что я до сих пор:
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