今すぐインデックスでノードを削除しようとしています。インデックス付きのノードのリストを印刷して、ユーザーが見られるようにインデックスを選択できるようにしたいと思います。私は自分の論理がインデックス付きのリストを印刷するのに大丈夫だと思うが、入力が出てこないと思う:(リンクされたリスト内のノードを削除する
私はまだこのリストを印刷することはできませんでしたが、削除したいインデックス」を出力し、ユーザーの選択を取ることができましたが、最終的にNullPointerExceptionを得
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);
}
}
除去方法:。 公共ボイドremoveEntry(int型のインデックス){
//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--;
}
}
NullPointerExceptionは次のものから発生します。
の//set node after temp's previous to temp's previous
temp.getNext().setPrev(temp.getPrev());
else if(index == length()){else if(index == length()-1){'を代わりに使うべきではありませんか? 0からのインデックス作成を開始し、 'length()'が要素の数である場合、テールのインデックスは 'length()'ではなく 'length() - 1'になります。 – biziclop