我们开始在课堂上处理列表,并且有一项任务是在没有创建新列表的情况下将数字与列表分开。所以我在列表中首先使用了sepNum标签。但它返回nullPointer,我不明白为什么。 nullPointer出现在separateNumbers方法的第2行。元素首先存在,并且是!null。
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;
}
}
}
这是Element类:
class Element {
char info;
Element point;
public Element (char ch) {
this.info=ch;
this.point=null;
}
public String toString() {
return info+(point == null ? " " + point : "");
}
}
我一直试图想出这个问题几个小时了。你能帮忙吗?
答案 0 :(得分:1)
第二次通过while循环发生问题。我用大括号中的值替换了变量。
public void separateNumbers()
{
sepNum = {info: 'a', point: null};
while ({'a'} < 0 || {'a'} > 9) //sepNum.info
sepNum = {null}; //sepNum.point
然后再次回到while循环以测试条件:
while ({null}.info < 0 || {null}.info > 9) //sepNum.info
因为您正在引用null,所以会得到一个空指针异常。