Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 7

Кодировка Хаффмана

19.06.2015, 06:31. Показов 1629. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день Форумчане. Есть Код На Java набирал я его в Eclipse. Кто может подсказать что с ним не так и меня поправить. В Java новичок поэтому сам разобраться не могу.
Класс Huffman
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package Huffman;
 
import java.io.*;
import java.util.*;
public class Huffman {
 
    public static void main(String[] args) throws FileNotFoundException, IOException {
        
     int n;
     Map frequenceMap = new HashMap<>();
     Map freeMap = new HashMap<>();
     Map parentMap = new HashMap<>();
     Scanner input = new Scanner(new File("Src/Huffman/Huffman.in.txt"));
     n =input.nextInt();
     for (int i=0; i<n;i++){
         frequenceMap.put("c"+(i+1), input.nextInt()); 
         freeMap.put("c"+(i+1), true);
         parentMap.put("c"+(i+1),"");
     }
     input.close();
     Tree t= new Tree(frequenceMap, freeMap, parentMap);
    }
 
}
Класс Tree
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package Huffman;
 
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.util.*;
 
public final class Tree {
    
    private String firstMin, secondMin;
    private int firstMinValue, secondMinValue, trueCount, codeLength = 0;
    private Map frequence;
    private Map free;
    private Map parent;
    
    Tree(Map fq, Map f, Map p) throws FileNotFoundException, IOException { 
        frequence=fq;
        free=f;
        parent=p;
        trueCount= frequence.size();
        buildTree(fq,f);
        showTree();
    }
  
    public void showTree() throws FileNotFoundException, IOException {
        Object codeLenght;
        for (string key: parent.keySet()) {
            codeLenght+=parent.get(key).lenght()*frequence.get(key);
        }
        FileOutputStream output = new FileOutputStream("Src/Huffman/Huffman.out.txt");
        output.write((codeLenght+"").getBytes());
        output.close();
            }
    
    public void buildTree(Map fq, Map f){
        while(trueCount !=1){
            min(fq, f);
            fq.put(firstMin + secondMin, firstMinValue + secondMinValue);
            f.put(firstMin + secondMin, true);
            f.put(firstMin, false);
            f.put(secondMin, false);
            trueCount--;
            for ( string key: parent.keySet()){
                if (firstMin.contains(key)){
                    parent.put(key, "0"+parent.get(key));
                } else if ((secondMin !=null)&&(secondMin.contains(key))){
                parent.put(key, "1"+ parent.get(key));  
                }
            }
        }
    }
    
    private void min(Map fq, Map f){
        firstMin=null;
        secondMin=null;
        int min = 1000000001;
        for (String key :fq.keySet()){
            if ((fq.get(key) < min) && (f.get(key) == true)){
                min= (int) fq.get(key);
                firstMin= key;
                firstMinValue = min;
                
            }
        }
        
    min=1000000001;
    for ( String key: fq.keySet()){
        if ((fq.get(key) < min) && (!key.equals(firstMin) && (f.get(key) == true))){
            min = (int) fq.get(key);
            secondMin=key;
            secondMinValue=min;
            }
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2015, 06:31
Ответы с готовыми решениями:

Кодировка Хаффмана и энтропия
Приветствую форумчан! Есть готовый, полностью рабочий код кодировки Хаффмана, а так же и рабочий код функции расчета энтропии. Нужно...

Код Хаффмана
В общем, взяла код для кодирования файлов по алгоритму хаффмана и написала реализацию. Есть два вопроса: 1. Почему я не могу вывести...

Кодирование Хаффмана
Помогите пожалуйста сделать вывод в консоли прям деревом, чтобы было видно, что является узлом, а что корнем, на рктинке примерный вывод...

4
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
19.06.2015, 11:33
Bared, а что с ним не так? Не компилируется? Неправильно работает? Пишет непристойные надписи на заборах? Матом ругается?
1
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 7
19.06.2015, 12:44  [ТС]
Не компилируется
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
19.06.2015, 17:13
Bared, какая ошибка?
0
0 / 0 / 0
Регистрация: 07.05.2016
Сообщений: 1
07.05.2016, 19:06
Всем привет. Ребята кто нить разобрался с ошибкой в этом коде?
Я вот хочу продемонстрировать это в Курсовом Работе, но выдает ошибку. Я новенький в Java, так что не могу сам справится. Может кто нибудь поможет мне?

Ошибки в красном, описание в синем

Кликните здесь для просмотра всего текста
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.util.*;

public final class Tree {

private String firstMin, secondMin;
private int firstMinValue, secondMinValue, trueCount, codeLength = 0;
private Map frequence;
private Map free;
private Map parent;

Tree(Map fq, Map f, Map p) throws FileNotFoundException, IOException {
frequence=fq;
free=f;
parent=p;
trueCount= frequence.size();
buildTree(fq,f);
showTree();
}

public void showTree() throws FileNotFoundException, IOException {
Object codeLenght;
for (String key: parent.keySet()) {
codeLength+=parent.get(key).length()*frequence.get(key); //Cannot resolve metod length
}
FileOutputStream output = new FileOutputStream("Src/Huffman/Huffman.out.txt");
output.write((codeLength+"").getBytes()) ;
output.close();
}

public void buildTree(Map fq, Map f){
while(trueCount !=1){
min(fq, f);
fq.put(firstMin + secondMin, firstMinValue + secondMinValue);
f.put(firstMin + secondMin, true);
f.put(firstMin, false);
f.put(secondMin, false);
trueCount--;
for ( String key : parent.keySet()){ //Incompatible Types
if (firstMin.contains(key)){
parent.put(key, "0"+parent.get(key));
} else if ((secondMin !=null)&&(secondMin.contains(key))){
parent.put(key, "1"+ parent.get(key));
}
}
}
}

private void min(Map fq, Map f){
firstMin=null;
secondMin=null;
int min = 1000000001;
for (String key :fq.keySet()){
if ((fq.get(key) < min) && (f.get(key) == true)){ //operator "<" cannot be applied to "java.lang.Object", "int"
min= (int) fq.get(key);
firstMin= key;
firstMinValue = min;

}
}

min=1000000001;
for ( String key: fq.keySet()){
if ((fq.get(key) < min) && (!key.equals(firstMin) && (f.get(key) == true))){ //operator "<" cannot be applied to "java.lang.Object", "int"
min = (int) fq.get(key);
secondMin=key;
secondMinValue=min;
}
}
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2016, 19:06
Помогаю со студенческими работами здесь

Кодирование Хаффмана
Провести анализ трудоемкости данного кода: Добавлено через 2 минуты import java.util.*; abstract class HuffmanTree implements...

Дикодирования алгоритма Хаффмана
Есть в файле закодированная строка и кодовая таблица буква, код как мне раскодировать строку?

Алгоритм Хаффмана.Вывод в файл.
Доброго времени суток возник вопрос.Я написал программу кодирования файла по методу Хаффмана.Вопрос следующий каким образом надо записывать...

кодировка Хаффмана
Дорогие программисты. Вот был написан код &quot;кодировка Хаффмана&quot;, и тут мы вводим количество данных и их частоту. Но я не могу то ли...

Кодировка текста методом Хаффмана
Здравствуйте. Помогите пожалуйста написать код на PascalABC, который использует алгоритм Хаффмана при работе с текстом. На вложенном файле...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru