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