【发布时间】:2014-03-27 01:59:04
【问题描述】:
好的,我几乎完成了这个程序,但我现在迷路了。我正在返回空指针(它在第 44 行说,但这只是一个 while 循环),我需要帮助来修复它。我使用一个链表来实现我的队列,而我的其他两个类都通过了 100%,所以最后一个类(CarQueue)是问题所在,即创建空指针。
public class CarQueue<E> {
private LinkNode<E> head;
private LinkNode<E> tail;
public CarQueue() {
head = null;
tail = null;
}
public CarQueue(E newData) {
LinkNode<E> temp = new LinkNode<E>(newData, null);
head = temp;
tail = temp;
}
public void addToQueue(E newData) {
LinkNode<E> temp = new LinkNode<E>(newData, null);
if (empty() == false) {
tail.setNext(temp);
tail = temp;
} else {
head = temp;
tail.setNext(temp);
tail = temp;
}
}
public String toString() {
LinkNode<E> temp = head;
String cars = "";
while (temp.getNext() != null) {
cars += temp.toString() + '\n';
}
return cars;
}
public E removeFmQueue() {
LinkNode<E> headReturn = head;
head = head.getNext();
return headReturn.getData();
}
public LinkNode<E> peek() {
return head.getNext();
}
public boolean empty() {
if (head == null)
return true;
else
return false;
}
}
【问题讨论】:
-
严格按照我的规范,我被告知要设置一个空构造函数,其中 head 为空,是的,但在我的第二个构造函数中,head 应该是 temp 节点的值。第二个构造函数被设置为好像队列中有一个元素,因此头和尾都是临时的。根据我的测试,当 (temp.getNext() != null) 抛出异常时,getNext 很好,它是在我的 LinkNode 类中设置的,可以完美运行并通过所有测试。我不确定为什么我会得到 null。希望这会有所帮助
标签: java nullpointerexception linked-list queue