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

标签 java collections queue

我正在尝试在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);
}

最佳答案

您忘记了 for 循环的“增量”部分。您已经获得了初始化部分(调用一次,这就是 i 永远保留 c 的原因)和条件部分,但是缺少执行的最后一部分循环的每次迭代。

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

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

关于java - 在 for 循环初始化时弹出队列的元素最终会始终弹出相同的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42581538/

相关文章:

java - 如何在 mongoDB 文档字段中保留特殊键并删除其中多余的键?

c# - 使用 Linq 从另一个具有匹配值的列表更新列表

Java 检查字符串可变长度(带子字符串)

Java Swing JList

java - 将电源集初始化为匿名接口(interface)

python - 通用对象 "watcher"代理,用于包装集合对象以记录状态更改(添加/删除)

c# - 有两个索引的有序队列

python - Pytest + 多处理队列不能很好地协同工作

javascript - jQuery 队列消息

java - Spring 批处理中的重写 Bean 问题