前提・実現したいこと
javaで双方向線形リストの勉強をしていて、
新しいノードを先頭に挿入にしていくプログラムを作りたいのですが、
NullPointterExceptionが出てしまいます。
insertAメソッドの2,3行目が間違っている気はするのですが…
実行結果が
空行
Taro
Jiro<->Taro
Sabu<->Jiro<->Taro
となるようにしたいのです。
発生している問題・エラーメッセージ
Exception in thread "main" java.lang.NullPointerException at exer3.link.DoublyLinkedList.toString(DoublyLinkedList.java:21) at java.base/java.lang.String.valueOf(String.java:3388) at java.base/java.io.PrintStream.println(PrintStream.java:1047) at exer3.link.tester.TesterD01.main(TesterD01.java:7)
該当のソースコード
import java.util.StringJoiner; public class DoublyLinkedList<V> { public class Node { private V value; private Node prev = this; private Node next = this; private Node(V v) { value = v; } public Node getPrev() { return prev; } public Node getNext() { return next; } public V getValue() { return value; } } private Node terminal; public DoublyLinkedList() { terminal = null; } public String toString() { StringJoiner j = new StringJoiner("<->"); Node p = terminal.next; while (p != terminal) { j.add(p.value.toString()); p = p.next; } return j.toString(); } public DoublyLinkedList<V> insertA(V v){ Node x = new Node(v); x.next = terminal.next; x.prev = terminal; terminal.next.prev = x; terminal.next = x; return this; } } ________________________________________________________________________________________ テスター public class Tester { public static void main(String[] args) { DoublyLinkedList<String> l = new DoublyLinkedList<>(); System.out.println(l); l.insertA("Taro");System.out.println(l); l.insertA("Jiro");System.out.println(l); l.insertA("Sabu");System.out.println(l); } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/18 15:06 編集