0

我是新手,我对以下方法有疑问:问题是:java.lang.NullPointerException

代码:

public static List<Integer> input(List<Integer> l)
{
        Node<Integer> pos=l.getFirst();
        System.out.println("Enter num (!=999)");
        int x = reader.nextInt();
        l.insert(null, x);
        while(x!=999)
        {
                System.out.println("Enter num (!=999)");
                l.insert(pos, x);
                pos = pos.getNext();
        }

        return l;
}

愚蠢的我,我忘记了一段时间内的输入消息......

4

2 回答 2

0

两种可能:

  1. 你的“ pos”参考是null(你可以检查)
  2. " pos" 对象包含一个 NULL 对象,然后编译器尝试将其自动装箱为某处的原始类型(该Node事物被声明为Integer对象类型)

nullSO:在尝试访问“”之前进行检查,并在声明内容时pos使用“ Integer”对象。

于 2013-01-28T15:28:35.190 回答
0

如果您初始化l为空列表,则调用

Node<Integer> pos=l.getFirst();

会回来null的。然后稍后,您调用pos.getNext();一个null实例,因此NullPointerException. 解决此问题的一种方法是处理while循环中出现空列表的可能性,如下所示:

while (x != 999)
{
    System.out.println("Enter num (!=999)");
    l.insert(pos, x);
    if (pos == null)
        pos = l.getFirst();
    else
        pos = pos.getNext();
}

当你运行它时,你会在你的代码中看到第二个问题,你应该能够解决它。

祝你好运!

于 2013-01-28T15:33:38.750 回答