2 回答
TA贡献2011条经验 获得超2个赞
Java 是按值传递的。因此,当您为headadd 方法的内部创建一个新的对象引用时,它会在方法结束时结束,
public static void add(ListNode <Integer> head, Integer value) {
if (head == null)
{
head = new ListNode <Integer> (value, null);//creates new reference
head.setNext(null);
} else {
while (head.getNext() != null)
{
head = head.getNext();
}
head.setNext(new ListNode <Integer> (value, null));
}
}
可能的解决方案是,head在方法调用本身期间初始化
您的添加方法
public static void add(ListNode <Integer> head, Integer value) {
while (head.getNext() != null){
head = head.getNext();
}
head.setNext(new ListNode <Integer> (value, null));
}
在您通话期间
if (head == null) {
head = new ListNode <Integer> (value, null);
head.setNext(null);
}
else add(head,value);
TA贡献1809条经验 获得超8个赞
这看起来像一个传递引用问题。简而言之,实例化一个新对象是传递引用不起作用的地方。
当您将对象引用传递给方法时,该方法正在获取指向该对象的新指针。对象上的操作将影响对象的两个“版本”,因为方法和全局指向同一个对象。
但是,如果您在方法内部重新初始化该指针(使用“new”关键字),则该方法的指针现在指向新对象,并且该方法外部的原始指针不会更新。
要修复您的错误,您需要在“add”方法之外处理“head is null”的情况。
添加回答
举报