链表NullPointerException

时间:2014-03-20 00:21:15

标签: java

我得到了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 :(得分:4)

您创建了一个数组,但未能将任何LinkedList个对象放入数组中。在向其中添加字符之前,您需要为LinkedList分配一个新的list[j][m]

答案 1 :(得分:0)

这里的问题是你创建了一个LinkedList对象的二维数组。但请记住,Java中对象的默认值为null,因此在首次创建数组时,您有一个2维的空数组。在嵌套的for循环中,您尝试填充您认为自己拥有的链接列表对象,但不是(它们的值为null)。所以基本上你说

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

显然这会创建一个空指针异常。

所以解决方案是在尝试添加对象之前使对象(在这种情况下创建一个新的LinkedList对象)。通过单独的2个嵌套for循环,如下所示:

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

通常是嵌套循环的代码。

或者您可以在嵌套for循环中声明对象

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]));
    }
}