0
我最近開始學習Java,最後一件事是我通過泛型編程和現在鏈接列表。現在,我試圖從鏈表中實現節點類作爲泛型,但我遇到了一些麻煩。我試圖聲明一個toString
方法,它可以迭代這個鏈表並打印它的元素,但是我每次撥打link.toString()
都會收到NullPointerException
,我很困惑我爲什麼會出現這個錯誤。我知道我的toString
方法的格式效率並不高,但我試圖按照我的書籍說明進行操作。我正在展示我的Node
課程和一個應用程序。實現節點作爲通用類
public class GenericNode<E> {
private E data;
private GenericNode<E> link;
public GenericNode(E intialData, GenericNode<E> initialLink){
data=intialData;
link=initialLink;
}
public GenericNode<E> addNodeAfter(E element) {
link = new GenericNode<E>(element, link);
return link;
}
public String toString(){
String field1=" ";
String field2=" ";
String result=" ";
if(data==null){
field1="dummy";
System.out.println("in dummy");
}
field1="Data: "+ data.toString()+ "\n";
if(link==null){
field2="null in tail!";
System.out.println("in tail");
}
field2="link: data: "+link.data.toString() ;
if(link!=null){
result=field1+field2+link.toString();
}
return field1+field2;
}
}
public class NodeAppilication {
public static void main(String[] args){
GenericNode<String> head=new GenericNode<String>("Paul", null);
GenericNode<String> tail=new GenericNode<String>("Saul",head.addNodeAfter("Saul"));
//figure 1
System.out.print(head.toString());
//figure2
tail.toString();
GenericNode<String> dummy=new GenericNode<String>(null,head);
}
}
非常感謝你的幫助,我實現了這個代碼,它的工作,不再得到NullPointerException,我只是有一個問題,根據這個問題的說明我想這個輸出:data:保羅 鏈接:data:Saul 鏈接:null在尾巴!然而,我沒有得到最後一行,它表明我的尾巴沒有指向任何東西,是因爲我實現了頭部和尾部的方式?再次感謝你,我真的很感謝你的幫助! – user2012891
@ user2012891您當前的代碼需要經過兩個鏈接,並以此結束。您需要添加一個循環來瀏覽鏈接,以便您可以打印任意長度的列表。 – dasblinkenlight