gpt4 book ai didi

java - 将 Node 实现为泛型类

转载 作者:行者123 更新时间:2023-12-01 14:03:33 28 4
gpt4 key购买 nike

我最近开始学习 Java,最后一件事是泛型编程,现在是链表。现在,我尝试将链表中的节点类实现为通用,但遇到了一些麻烦。我试图声明一个 toString 方法,该方法可以迭代此链接列表并打印其元素,但是每次调用 link. toString() 我很困惑为什么会收到此错误。我知道我的 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);

}

}

最佳答案

您对 null 的检查缺少 else:

if(data==null){
field1="dummy";
System.out.println("in dummy");
} else { // <<== Add an "else" here
field1="Data: "+ data.toString()+ "\n";
}
if(link==null){
field2="null in tail!";
System.out.println("in tail");
} else { // <<== And here...
field2="link: data: "+link.data.toString();
}

当前,您的代码检查 null,将 field1field2 的值设置为默认值,然后立即尝试取消引用datalink,导致空指针异常。

关于java - 将 Node 实现为泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19128858/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com