2014-10-18 52 views
0

我想从链表中删除特定的字符串,但我不断收到空指针异常错误!任何帮助家伙?不断收到链接列表中的空指针异常

public void delete(String deleteName) { 

     LinkedListNode current = head; 
     if(head==null){ 
      System.out.println("Nothing to delete from the list! Insert data."); 
     } 
     // for head 
     else if(current.getName()==deleteName){ 
      head=current.getNext(); 
     } 
     // for tail 
     else if(findTail().getName() == deleteName){ 
      while(current.getNext().getNext()!=null){ 
       current = current.getNext(); 
      } 
      current.setNext(null); 
     } 
     else{ 
      while(current.getNext().getName()!=deleteName){ 
       current=current.getNext(); 
      } 
      current.setNext(current.getNext().getNext()); 
     } 
     System.out.println(""); 
     System.out.println(deleteName +" has been deleted from the list."); 

    } 
+1

充其量,你有两个问题 - 比较字符串与==(不,你不应该这样做),你真的应该提供你的NPE发生的地方。如果你在那条线上使用了一个调试器,它也将非常有用。 – Makoto 2014-10-18 01:57:52

+0

注意current.getNext()。getNext()!= null会在current.getNext()为null时中断。 – 2014-10-18 02:01:26

回答

0

做了一些编辑。现在工作!不要使用==来比较字符串。

public void delete(String deleteName) { 



     LinkedListNode current = head; 
     if(head==null){ 
      System.out.println("Nothing to delete from the list! Insert data."); 
     } 
     // for head 
     else if(current.getName().equals(deleteName)){ 
      head=current.getNext(); 
     } 
     // for tail 
     else if(findTail().getName().equals(deleteName)){ 
      while(current.getNext().getNext()!=null){ 
       current = current.getNext(); 
      } 
      current.setNext(null); 
     } 
     else{ 
      while(!current.getNext().getName().equals(deleteName)){ 
       current=current.getNext(); 
      } 
      current.setNext(current.getNext().getNext()); 
     } 
     System.out.println(""); 
     System.out.println(deleteName +" has been deleted from the list."); 

    } // end of delete() 
+0

谢谢你现在工作!完全忘了==。 – Sooner 2014-10-18 02:04:40