我无法弄清楚为什么我的程序的这一部分不起作用,我偷看while循环并确认堆栈不是空的,但当我尝试在while循环内访问它时我得到此错误:
“线程中的异常”主“java.util.EmptyStackException at java.util.Stack.peek(未知来源)“
这是相关的一段代码
String test = list.peek();
System.out.println(test);
while(list.peek() != null)
{
temp = list.pop();
还有更多的while循环,但是在括号内调用list.peek
后它会中断,我尝试将其更改为“while(test != null)
”以进行测试,但一旦到达{{1}它就会中断}
答案 0 :(得分:2)
如果堆栈为空,peek
方法将抛出EmptyStackException
。要测试堆栈是否为空,请使用empty()
方法:
while(!list.empty())
此外,请不要将您的Stack
“列表命名为”;这可能令人困惑。
答案 1 :(得分:1)
当您peek()
时,也可以返回EmptyStackException
。您应该使用此代码:
while(!list.empty()) {
temp = list.pop();
}
正在发生的事情是,窥视不能像你想象的那样处理空元素。在peek()
之前,您必须确保堆栈不为空。
作为旁注,命名Stack'list'有点奇怪。这意味着您的结构是List