Я пытаюсь выяснить, почему мой метод Remove возвращает исключение NullPointerException. Я тестировал против многочисленных сценариев и это, кажется, работает хорошо, по большей части, но когда я тестировал против моего профессора кода, я получаю NullPointerException:Удалить метод в LinkedList возвращает NullPointerException
Против моего драйвера (это выход):
List: Hamadi, Salisu, Galo, Ballo,
4
Replacing Galo with Abdullahi
List: Hamadi, Salisu, Abdullahi, Ballo,
Removing Salisu from the list
List: Hamadi, Abdullahi, Ballo,
List: 65, 21, 42,
Removing 65 from the list
List: 21, 42,
List: 1, 3,
Removing 1 from the list
List: 3,
List: 25, 3,
Все работает хорошо, пока я не проверить код для моего метода удаления (см ниже методы) против моего наставники кода:
/** Remove a node at the specified index and return its data element.
* @param index The index of the element to remove
* @return The data element removed
* @throws IndexOutOfBoundsException If index is outside the bounds of the list
*
*/
public E remove(int index)
{
// TODO: Implement this method
if (index < 0 || index >= size() || size() == 0) {
throw new IndexOutOfBoundsException("Nodes are not within the array");
}
int i = 0;
LLNode<E> currentNode = head.next;
while (i < size) {
if (i == index) {
System.out.println("Removing " + currentNode.data + " from the list");
currentNode.next.prev = currentNode.prev;
currentNode.prev.next = currentNode.next;
size--;
return currentNode.data;
}
currentNode = currentNode.next;
i++;
}
return null;
}
в настоящее время, кстати, я реализованное удаление узла является Узел, который удаляется для следующего узла, t к предыдущему узлу удаленного узла и наоборот.
Любой вход был бы очень благодарен за то, что я могу сделать для дальнейшего улучшения метода удаления, чтобы предотвратить (и обойти) любые возможные ошибки NullExceptionErrors. Благодаря!
Что такое переменный 'размер' во время цикла? – SomeDude
вы должны проверить условия типа 'head.next == null', где список имеет только один элемент. и когда вы указываете индекс как 'size', и нет' next' – SomeDude