执行此行时,我得到NullPointerException
:
temp.previous.next = null;
在下面的代码的最后else
中。
Contact
类是链接列表的节点。
任何人都可以看到问题所在吗?
public Contact delete(){
Scanner keyboard =new Scanner(System.in);
Contact temp = first;
System.out.print("Enter a name: ");
String name = keyboard.next();
while (temp != null) {
if (temp.name.equalsIgnoreCase(name)) {
break;
}
temp = temp.next;
}
if (temp == null) {
System.out.println("record not found.");
} else if (count == 1) {
first = null;
last = null;
count--;
return temp;
} else if (count==2) {
if (temp == first) {
temp.next.previous = null;
first = temp;
count--;
return temp;
} else {
first.next = null;
count--;
return temp;
}
} else if (count >= 3) {
if (temp == first) {
temp.next.previous = null;
first = temp.next;
count--;
return temp;
} else {
if (temp.next != null) {
temp.next.previous =temp.previous;
temp.previous.next = temp.next;
count--;
return temp;
} else {
temp.previous.next = null; // <-- NPE here!
count--;
return temp;
}
}
}
return temp;
}
答案 0 :(得分:3)
您要将null
分配给temp.previous.next
,但是您无处检查temp.previous
是否为空。
此外,您使用temp
初始化first
,大概是(“第一个”)没有前一个节点 - 即temp.previous
可能为空。
因此,您可能会NullPointerException
尝试执行问题代码。
QED。