gpt4 book ai didi

java - 尝试在链接列表中查找最后一项的值时出现 NullPointerException 错误

转载 作者:行者123 更新时间:2023-12-02 10:58:01 25 4
gpt4 key购买 nike

我还是 Java 的初学者 - 我正在尝试创建一个方法来查找链接列表中最后一项的值,但它抛出 java.lang.NullPointerException 错误,它表明错误在第21行。根据我的理解,当程序员调用引用类型变量来引用基本上没有任何内容时,会发生空指针异常,因为该变量尚未声明。

例如,如果我编写 Integer k;,则在声明以下内容之前我无法调用 k:k = new Integer(10);。如果我写int k;,Java会自动将值设置为0,因为它是原始类型,我将能够直接调用它。

在这种情况下,我有点理解为什么它会抛出这个错误,因为正如您在 getLast() 方法的第二行中看到的,我调用了 next,它应该是 null,因为它尚未声明。但是,它表明错误出现在第 21 行,我在其中重新分配了 last。为什么?

如何修复此代码?仅供引用,这只是我学校网站上的一个练习题,任务是完成 getLast() 方法。

/*
* Class for representing a linked list of ints.
*/
public class List {
public int value;
public List next;

public List(final int setValue) {
value = setValue;
}

/**
* Return the value of the last item in the list.
*/
public int getLast() {
List current = next;
int last = next.value;
while(next != null) {
current = next;
next = current.next;
last = next.value; //ERROR
}
return last;
}
}

最佳答案

您应该将移动到最后一个节点的语句作为 while 循环的最后一个语句,以便在下一次迭代时,循环条件将变为 false 并且循环终止。在您的情况下,您尝试在到达列表末尾后访问 next 元素。

此外,您必须使用局部变量 current 进行迭代,而不是分配/更改实例变量 next。如果您下次调用 getLast,它将不起作用,因为 next 现在指向 null

将其更改为

List current = next;
int last = value;//Set to the current value to begin with
while(current != null) {
last = current.value;
current = current.next;
}
return last;

关于java - 尝试在链接列表中查找最后一项的值时出现 NullPointerException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51568106/

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