读书人

一个小疑点请大家帮忙

发布时间: 2012-01-29 21:39:32 作者: rapoo

一个小问题,请大家帮忙
void delete(int x){
p=linkFirst;
while((p.nextnode.data != x) && (p.nextnode != null)){
p = p.nextnode;
}
if(p.nextnode == null){
System.out.printlnfou( "data not nd! ");
}
else{
p.nextnode = p.nextnode.nextnode;
}
}
想删除串列中的值等于x的节点,我将x赋值为串列中不存在的节点值,想让它输出
"data not nd! ",但是main函数报错,报错信息是:

Exception in thread "main " java.lang.NullPointerException
at LinkNode.delete(LinkList.java:66)
at LinkList.main(LinkList.java:87)

[解决办法]
你自己调试跟踪下看具体出错的位置这样才好分析为什么出错,也许逻辑有问题,或许linkFirst
根本就是null
[解决办法]
代码不是很规范,不过while这行明显有问题:

while((p.nextnode.data != x) && (p.nextnode != null))

应该是:

while(p.nextnode != null && p.nextnode.data != x)

利用&&的“短路”特性,如果p.nextnode为null,则不执行后半部分。

读书人网 >J2SE开发

热点推荐