在初始化for循环时弹出队列的元素最终会一直弹出相同的元素

时间:2017-03-03 14:33:12

标签: java collections queue pop

我正在尝试使用Java中的pop方法。我期望按顺序"c", "b", "a"看到字符串。但是,它无限打印出"c"。为什么会这样?

Stack<String> a = new Stack<>();
a.push("a");
a.push("b");
a.push("c");
for(String i = a.pop(); !a.isEmpty() ;){
    System.out.println(i);
}

2 个答案:

答案 0 :(得分:2)

你忘记了for循环的“增量”部分。你有初始化部分(称为一次,这就是i永远保持c的原因)和条件部分,但是你错过了循环的每次迭代执行的最后一部分。

然而,不是写for(String i = a.pop; !a.isEmpty(); i = a.pop())而是建议使用更合适的while循环

while(!a.isEmpty())
    System.out.println(a.pop());

答案 1 :(得分:1)

替换:

for(String i = a.pop(); !a.isEmpty() ; i = a.pop())

使用:

i

实际上,您并未替换{{1}}中的值,以及堆栈中的静止元素。因此,您只是获得一个无限循环,并显示您弹出的最后一个值,即&#34; c&#34;。