Java 列表空指针

Java 列表空指针,java,list,nullpointerexception,Java,List,Nullpointerexception,我们开始在课堂上学习列表,有一项任务是在不创建新列表的情况下将数字从列表中分离出来。所以我在列表中使用了sepNum标记和first。但是它返回空指针,我不明白为什么。空指针出现在SeparateEnumbers方法的第2行。元素首先存在并且是!空 public void separateNumbers() { sepNum = first; while (sepNum.info < 0 || sepNum.info > 9) sepNum = sep

我们开始在课堂上学习列表,有一项任务是在不创建新列表的情况下将数字从列表中分离出来。所以我在列表中使用了sepNum标记和first。但是它返回空指针,我不明白为什么。空指针出现在SeparateEnumbers方法的第2行。元素首先存在并且是!空

public void separateNumbers() {
    sepNum = first;
    while (sepNum.info < 0 || sepNum.info > 9)
        sepNum = sepNum.point;

    Element previous = sepNum;
    Element current = sepNum.point;
    while (current != null) {
        if (current.info < 0 || current.info > 9){
            previous.point = current.point;
            current = current.point;
        } else {
            previous = current.point;
            current = current.point;
        }
    }
}

我已经想了几个小时了。你们能帮忙吗?

你们的问题在while循环中第二次出现。我用大括号中的值替换了变量

public void separateNumbers()
{
    sepNum = {info: 'a', point: null};
    while ({'a'} < 0 || {'a'} > 9)  //sepNum.info
        sepNum = {null};            //sepNum.point
public void separateNumbers()
{
sepNum={info:'a',point:null};
而({'a'}<0 |{'a'}>9)//sepNum.info
sepNum={null};//sepNum.point
然后再次返回while循环以测试条件:

while ({null}.info < 0 || {null}.info > 9)    //sepNum.info
while({null}.info<0 |{null}.info>9)//sepNum.info

因为您正在延迟null,所以会出现null指针异常。

是否有堆栈跟踪?如果它发生在第2行,则意味着
第一个
(无论是什么)为null。
第一个
的值必须为null-您是否100%确定不是这种情况。请随意添加更多证据(可能是调用方法)@不一定是SteveSmith。由于sepNum变量在循环中被设置为sepNum.point,因此sepNum.point也可能为null。然后,循环将在下面的iteration@OH上帝蜘蛛是真的。为什么他们从不发布堆栈跟踪?@SteveSmith first是堆栈跟踪。它绝对不是空的。我忘了提到,当我用first更改sepNum时,它可以工作,但我需要在末尾打印两个不同的。。。。
while ({null}.info < 0 || {null}.info > 9)    //sepNum.info