日期:2014-05-20  浏览次数:20771 次

一个小问题,请大家帮忙
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,则不执行后半部分。