我有这样的代码,
public static void main(String[] args) throws Exception {
String popElement ;
Stack<String> stack = new Stack();
stack.push( "new" );
stack.push( "new" );
stack.push( "new1" );
stack.push( "new2" );
if(! stack.empty() )
{
do
{
popElement = stack.pop();
System.out.println( "pop element "+popElement );
}while (popElement.equals( "new" ));
}
System.out.println( "STACK :"+stack );
我希望弹出堆栈直到新的,我需要堆栈输出为[new,new] ..但我的代码只弹出new2它显示输出为[new,new,new1。我只需要[新的,新的]
答案 0 :(得分:3)
换句话说,
弹出太多元素。
要检查下一个元素是不是“新”,
没有实际删除该元素,
您需要使用peek()
代替pop()
。
另外, 为了避免在所有元素都是“新”的情况下崩溃程序, 你需要反复检查堆栈是否为空。
while (!stack.empty() && !stack.peek().equals("new")) {
System.out.println("pop element " + stack.pop());
}
System.out.println("STACK :" + stack);