Я не знаю, почему это переполнение стека
Сообщение об ошибке это
Exception in thread "main" java.lang.StackOverflowError
at java.lang.AbstractStringBuilder.append(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at java.lang.StringBuilder.<init>(Unknown Source)
at linkedList.Node.toString(DoublyLinkedList.java:15)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
, а затем снова и снова одни и те же сообщения
это первый раз, когда я получил эту ошибку, поэтому, пожалуйста, дайте мне знать, почему эта ошибка возникает.
это для создания двусвязного списка.
когда я комментировал //tail.next = newOne; или //newOne.prev = tail;
работает
спасибо.
class Node{
String val;
Node next;
Node prev;
public Node(String val){
this.val = val;
this.next = null;
this.prev = null;
}
@Override
public String toString() {
return "Node [val=" + val + ", next=" + next + ", prev=" + prev + "]";
}
}
public class DoublyLinkedList {
Node head;
Node tail;
int length;
LinkedList<Integer> aa = new LinkedList<>();
public DoublyLinkedList() {
this.head = null;
this.tail = null;
this.length = 0;
}
public static void main(String[] args) {
DoublyLinkedList dd = new DoublyLinkedList();
dd.push("asdad");
dd.push("wwwwwww");
System.out.println(dd.toString());
}
public void push(String val) {
Node newOne = new Node(val);
if(length == 0) {
head = newOne;
tail = newOne;
} else {
tail.next = newOne;
newOne.prev = tail;
tail = newOne;
}
length++;
}
@Override
public String toString() {
return "DoublyLinkedList [head=" + head + ", tail=" + tail + ", length=" + length + "]";
}
}