2017-11-18 10 views
1

までスタックのポップの要素私はこのようなコードを持って、いくつかの要素

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); 

私は新しいが、私は[、新しい新]として出力を積み重ねる必要になるまでスタックをポップにしたい..しかし、私のコードポップのみNEW2 [new、new、new1]という出力が表示されます。私は[新しい、新しい]]だけが必要です

答えて

2

つまり、 あまりにも多くの要素がポップされます。 実際にその要素を削除せずに次の要素が「新規」でないことを確認するには、pop()の代わりにpeek()を使用する必要があります。

また、すべての要素が「新規」の場合にプログラムがクラッシュするのを避けるには、スタックが空でないことを繰り返し確認する必要があります。

while (!stack.empty() && !stack.peek().equals("new")) { 
    System.out.println("pop element " + stack.pop()); 
} 
System.out.println("STACK :" + stack); 
関連する問題