3
我正在一个堆栈的链表实现,似乎有我需要的只有一个错误。我插入3个字符串,但在第三个字符串被弹出之前,我得到一个NullPointerException。链接列表堆栈丢失堆栈上的最后一项推出
在运行调试时,我发现这个缺失的值正在从该列表中“弹出”,但它似乎没有被计数......意味着它从堆栈中丢失,未打印到控制台,在最后一个值已被弹出的情况下,抛出NullPointerException异常的一次迭代。有人能告诉我如何让我所有的价值观打印到控制台吗?
这里是我的LinkedListStack类:
public class LinkedListStack <T>{
private LinkedListStackNode<T> top;
public T data;
class LinkedListStackNode<T> {
private T data; //LINE 8
private LinkedListStackNode<T> next;
public LinkedListStackNode(T data, LinkedListStackNode<T> next) {
this.data = data;
this.next = next;
}
}
public void stack(){
top = null;
}
public boolean isEmpty(){
return top == null;
}
public void push (T t){
top = new LinkedListStackNode<T> (t, top);
}
public T pop(){
if (isEmpty()){
System.out.println("The stack is empty!");
}
else{
top = top.next;
}
return top.data; //Line 32
}
public T peek(){
if (isEmpty()){
System.out.println("Stack is Empty");
}
return top.data;
}
}
这里是我的主要():
public class StacksAndQsMain {
public static void main(String[] args) {
...snipped code to condense (not part of this implementation)...
//LinkedList Implementation
LinkedListStack<String> lls = new LinkedListStack<>();
String s3 = "Tonight"; //this does not print but is removed from Stack
String s4 = "We Conqure"; //prints fine
String s5 = "Stacks"; //prints fine
lls.push(s5);
lls.push(s4);
lls.push(s3);
while (!lls.isEmpty()){
System.out.println(lls.pop()); //LINE 32
}
}
}
让我怎么解决这个问题? – Chris 2013-03-14 02:05:53
添加程式码 – 2013-03-14 02:07:30
非常感谢! 'ret'是短的,还是只是你选择的字母? – Chris 2013-03-14 02:10:17