在 Java 中使用传统的 for 循环遍历堆栈



为什么这不起作用:

我在堆栈上有两个项目,但它通过一次循环

for (int i = 0; i < stack.size(); i++) {
String[] values = stack.pop().trim().replaceAll(" ", "").split("/");
String[] moveList = values[0].trim().replaceAll(" ", "").split("-");
}

与其使用for 循环,不如使用 while 循环遍历所有元素。

例:

while(!stack.empty()){
String[] values = stack.pop().trim().replaceAll(" ", "").split("/");
String[] moveList = values[0].trim().replaceAll(" ", "").split("-");
}

在 Stack 对象中,pop()方法删除堆栈顶部的对象并返回该对象作为结果。因此,在第一次执行时,stack.pop()操作会从堆栈中删除第一项,因此大小从2减小到1。在 ">for" 循环的下一次迭代中,变量i的值为1,并且 "for" 条件i<stack.size()未被验证,因此 ">for" 循环被终止。这就是为什么它只通过一次循环。 最好检查堆栈是否不为空作为循环条件。

最新更新