为什么这不起作用:
我在堆栈上有两个项目,但它通过一次循环
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" 循环被终止。这就是为什么它只通过一次循环。 最好检查堆栈是否不为空作为循环条件。