Java: исключение нулевого указателя при распаковывании Целого числа?

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

20
задан xan 26 February 2012 в 22:54
поделиться

3 ответа

Исключение нулевого указателя является результатом распаковки результата inverse.get (animal) . Если обратный не содержит ключа animal , он возвращает null , «типа» Integer . Учитывая, что присвоение относится к ссылке int , Java распаковывает значение в int , что приводит к исключению нулевого указателя.

Вы должны либо проверить обратное значение . containsKey (animal) или используйте Integer в качестве типа локальной переменной, чтобы избежать распаковки и действовать соответственно. Правильный механизм зависит от вашего контекста.

56
ответ дан 29 November 2019 в 22:54
поделиться

У вас должна быть трассировка стека. Там точно написано, по какой линии это произошло. Опубликуйте его, и мы сможем сказать.

Из всего опубликованного кода я могу «догадаться», что одно из них является потенциальным исключением NullPointerException (NPE).

узел может иметь значение null и вызывать node.getParent .

Родитель узла может быть нулевым, и вызов parent.getChildren может вызвать NPE.

Один из братьев и сестер может иметь значение null и вызывать sibling.equals может выдать NPE.

cellInfo может иметь значение null, а cellInfo.inverse выбросит его.

Наконец, "обратный" может быть нулевым и inverse.get () бросит его.

Уф !! ...

Итак, чтобы избежать этих безумных догадок,

0
ответ дан 29 November 2019 в 22:54
поделиться

Проверьте inverse.containsKey (животное), BiMap . У обратной может не быть животного.

4
ответ дан 29 November 2019 в 22:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: