gpt4 book ai didi

java - Java 中冒泡排序的 Null Ptr 异常

转载 作者:行者123 更新时间:2023-11-30 04:39:44 25 4
gpt4 key购买 nike

在我到达我的代码之前,我就遇到了空指针异常。我无法判断它是否能正常工作,因为我无法让它通过这一点。

此行抛出错误:

if(currentNode.getData() > currentNode.getNext().getData())

这是我的冒泡排序:

public static void bubbleSort(DoubleLinkedList list) //static method used to sort the linked list using bubble sort
{
int i = 0;
int j = 0;
Node currentNode = list.head;
Node previousNode = currentNode;
Node tempNext = currentNode;
Node tempPrevious = currentNode;


for(i=1; i<list.getSize(); i++)
{
for(j=0; j<list.getSize()-1; j++)
{
if(currentNode.getData() > currentNode.getNext().getData())
{
if(currentNode == list.head)
{
Node tempNode = currentNode.getNext();

list.head = tempNode;
tempNext = tempNode.getNext();

tempNode.setNext(currentNode);
currentNode.setNext(tempNext);
currentNode.setPrevious(tempNode);

tempNext.setPrevious(currentNode);
}
else if(currentNode.getNext() == list.last)
{
Node tempNode = currentNode.getNext();
list.last = currentNode;
tempPrevious = currentNode.getPrevious();

tempNode.setNext(currentNode);
tempNode.setPrevious(tempPrevious);

currentNode.setPrevious(tempNode);
}
else
{
Node tempNode = currentNode.getNext();
tempPrevious = currentNode.getPrevious();
tempNext = currentNode.getNext();

tempPrevious.setNext(tempNode);
tempNext.setPrevious(currentNode);

currentNode.setNext(tempNext);
tempNode.setPrevious(tempPrevious);
}

}

currentNode = currentNode.getNext();

}
}



}

我认为循环的限制会阻止编译器尝试访问不一定存在的指针,这就是我所理解的空指针异常。

如果有人可以帮助我克服这个错误,以便我可以测试我的冒泡排序,我将非常感激!

最佳答案

currentNode 为 null 或 currentNode.getNext() 返回 null,这就是为什么您无法对其调用 getData() 的原因。在使用节点之前,您应该始终检查节点是否有空值。

关于java - Java 中冒泡排序的 Null Ptr 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12594040/

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