Мне дано задание создать класс LinkedList
по одному методу add
, addAtFirst
и toString
. Все работает нормально, если я не сделаю второй вызов toString
метода.
Это полный класс с методами:
public class SingleList {
Node head;
int size;
public static class Node{
int data;
Node next;
public Node(int data) {
this.data=data;
}
}
public void add(int data) {
size++;
if(head==null) head= new Node(data);
else {
Node n= new Node(data);
Node temp= head;
while(temp.next!=null) {
temp= temp.next;
}
temp.next=n;
}
}
public int size() {
return size;
}
public boolean isEmpty() {
return head==null;
}
public void insertAtHead(int data) {
size++;
Node n= new Node(data);
n.next=head;
head=n;
}
@Override
public String toString(){
if(size==0) return"[]";
StringBuilder sb= new StringBuilder().append("[");
for(int i=0;i<size-1;i++)
{ sb.append(head.data+",");
head=head.next;
}
return sb.append(head.data+"]").toString();
}
}
Это код класса драйвера, очевидно, в основном теле:
java
SingleList sl= new SingleList();
System.out.println(sl);
for(int i=0;i<=10;i++) sl.add(i);
System.out.println(sl);
System.out.println(sl);
Выходные данные следующие:
[]
[0,1,2,3,4,5,6,7,8,9,10]
А затем исключение нулевого указателя и показывает строку источника для исключения, которая является этой строкой sb.append(head.data+",");