0

I am trying to delete a particular string from the linked list, but i keep getting null pointer exception error! Any help fellas?

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.");

    }
Sooner
  • 338
  • 1
  • 2
  • 13
  • 1
    At best, you've got two problems - you're comparing Strings with == (no you're not supposed to do that), and you really should provide whereabouts your NPE is occurring. It would help you immensely also if you used a debugger on that line. – Makoto Oct 18 '14 at 01:57
  • Notice current.getNext().getNext()!=null will break if current.getNext() is null. –  Oct 18 '14 at 02:01

1 Answers1

0

Did some editing. works now! Dont use == for comparing strings.

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()
rrr babu
  • 113
  • 1
  • 2
  • 10