связанный список NullPointerException

1

Я получаю NullPointerException и я не знаю, почему.

LinkedList<Character>[][] list = new LinkedList[n][n];

for (int j = 0; j < n; ++j)
{
    for (int m = 0; m < 1; m++)
    {
                // Here is the problem
        list[j][m].add("" + (characterArray[j]));
    }
}

Я хочу добавить символы из массива в список. Когда я запускаю его, он говорит об NullPointerException. Я не знаю, как инициализировать список.

Теги:

2 ответа

0
Лучший ответ

Проблема здесь в том, что вы создали двухмерный массив объектов LinkedList. Но помните, что значение по умолчанию для объектов в Java равно null, поэтому, когда массив сначала создается, у вас есть двумерный массив нулей. Во вложенных циклах вы пытаетесь заполнить объекты связанного списка, которые, как вы думаете, у вас есть, но вы этого не сделали (их значение равно null). Так что в основном вы говорите

null.add("" + (characterArray[j]));

очевидно, это создает исключение с нулевым указателем.

Таким образом, решение состоит в том, чтобы сделать объект (в этом случае создать новый объект LinkedList), прежде чем пытаться его добавить. Либо имея отдельный 2 вложенных для цикла, как показано ниже:

for(int j = 0; j < n; j++)
{
    for(int m = 0; m < n; m++)
    {
        list[j][m] = new LinkedList<Charater>();
    }
}

обычно следуют вашим кодом для вложенных циклов.

Или вы можете просто объявить объект внутри своих вложенных циклов

for (int j = 0; j < n; ++j)
{
    for (int m = 0; m < 1; m++)
    {
                // Here is the problem
        list[j][m] = new LinkedList<Charater>();
        list[j][m].add("" + (characterArray[j]));
    }
}
4

Вы создали массив, но в массив не LinkedList объекты LinkedList. Вам нужно назначить новый LinkedList для list[j][m] прежде чем добавлять к нему символы.

  • 0
    Я не хочу помещать какие-либо другие объекты в список, кроме некоторых символов из массива. Я не совсем понимаю. Как вы хотите инициализировать его?
  • 0
    LinkedList - это объект. Вы создали массив с пространством для n*n LinkedList объектов n*n LinkedList . Но вы сами не создали объекты LinkedList . Вам нужно написать что-то вроде list[j][m] = new LinkedList<Character>(); внутри вашего цикла, потому что, если вы этого не сделаете, то нет LinkedList , и вы пытаетесь добавить символы к чему-то, что не существует.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню