我得到一個空指針異常,然後我甚至可以得到我的代碼。我不知道它是否會正常工作,因爲我無法通過這一點。Bubble排序Java中的空Ptr異常
錯誤被拋出這一行:
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();
}
}
}
我想在我的環路的限制將保持編譯器試圖訪問的指針不一定存在這就是我所理解的空指針異常。
如果有人能幫助我克服這個錯誤,以便我可以測試我的冒泡排序,我會非常感激!
我已經添加了一個條件檢查,以確保它們在if語句中不爲null,但同樣的錯誤被拋出。還有什麼我可以做的? – ZAX
它必須是其中的任何一個爲空。這就是NullPointerException的意思。或者你必須檢查你的'DoubleLinkedList'的實現。錯誤可能來自那裏。如果您在該行發生此錯誤,則兩個值中的任何一個都絕對爲空。 – davidXYZ