在堆栈中弹出元素直到某个元素

时间:2017-11-18 14:01:28

标签: java stack pop

我有这样的代码,

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。我只需要[新的,新的]

1 个答案:

答案 0 :(得分:3)

换句话说, 弹出太多元素。 要检查下一个元素是不是“新”, 没有实际删除该元素, 您需要使用peek()代替pop()

另外, 为了避免在所有元素都是“新”的情况下崩溃程序, 你需要反复检查堆栈是否为空。

while (!stack.empty() && !stack.peek().equals("new")) {
    System.out.println("pop element " + stack.pop());
}
System.out.println("STACK :" + stack);