Question

essayer de supprimer un nœud par index maintenant.J'aimerais imprimer la liste des nœuds avec des indices afin que l'utilisateur puisse sélectionner l'index comme indiqué.Je pense que ma logique est correcte dans l'impression de la liste avec les indices, mais aucune entrée ne sort :(

À un moment d'un point de tromper avec cela, j'étais toujours incapable d'imprimer la liste des nœuds, mais l'entrée "Entrer dans l'index que vous souhaitez supprimer" était la sortie et a pu prendre la sélection des utilisateurs mais a finalement obtenu une nullpoinpointeexception.

            else if (menu.equals("d")) {
            EntryNode temp = head;
            while (temp != null) {
                for (int i = 0; i < addressBook.length(); i++) {
                    //gets node at index
                    System.out.println(temp.getFirstName() + i);
                    temp = temp.getNext();
                }
            System.out.println(" ");
            System.out.println("Please enter the index of the entry you wish to delete ");
            int index = keyboard.nextInt();
            addressBook.removeEntry(index);
            }

        }

la méthode de retrait: Public Void Realentertry (Int Index) {

    //delete from the head
    if (index == 0) {
        EntryNode temp = head;
        head = temp.getNext();
        temp.setNext(null);
        head.setPrev(null);
        size--;
    }
    //delete from the tail
    else if (index == length()) {
        EntryNode temp = tail;
        temp.setPrev(null);
        tail.setNext(null);
        tail = temp.getPrev();

        size--;
    }
    //in the middle
    else {
        EntryNode temp = head;
        for (int i = 0; i < index; i++) {
            //gets node at index
            temp = temp.getNext();
        }
        //set node after temp's previous to temp's previous 
        temp.getNext().setPrev(temp.getPrev());
        temp.getPrev().setNext(temp.getNext());
        temp.setNext(null);
        temp.setPrev(null);
        size--;
    }
}

La nullpointerException vient de:

//set node after temp's previous to temp's previous 
temp.getNext().setPrev(temp.getPrev());

Était-ce utile?

La solution

You should check if temp.getNext() is not null before calling the setPrev() on it.

Also, you should check with length()-1 as you have nodes which are zero indexed.

Autres conseils

Indices are in the range [0, length() - 1], so you should use

else if (index == length() - 1) {

instead.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top