我实现了一个抽象类,并实现了一个插入到排序列表中的insert
方法。这是我到目前为止的递归方法:
public void insert(E data) {
Node<E> temp = head;
insert(temp, data);
}
private void insert(Node<E> curr, E data){
Node<E> temp = new Node<E>(data);
if (head == null || data.compareTo(head.data) < 0) {
temp.next = head;
head = temp;
}
else if(curr.data.compareTo(data) < 0 && (curr.next == null || curr.next.data.compareTo(data) > 0)){
temp.next = curr.next;
curr.next = temp;
return;
}
else{
insert(curr.next, data);
}
}
但是,无论何时我尝试在列表中插入2个以上的项目,都会出现空指针异常错误。有人可以解释我的错误吗?当我尝试运行它时只需插入1和2 https://gyazo.com/d254d563675b9d1b0efbce443eda4445
就会发生这种情况答案 0 :(得分:1)
它表示第53行有一个NullPointerException,它是else-if语句:
else if(curr.data.compareTo(data) < 0 && curr.next.data.compareTo(data) > 0)
我认为它会产生异常,因为curr.next为null。从我可以看到的方式来看,当你添加第一个元素时,你初始化head,但head.next为null(temp.next = head为null,因为当时head为null)。因此,当您尝试添加第二个元素时,您无法访问curr.next.data并且它会产生NullPointerException。