我正在尝试编写一个Java方法来从堆栈中预先形成“多重弹出”。
它应该对stack
个对象k
执行“弹出”操作次数。这就是我的想法,但它并不完全正确。有任何帮助吗?
public void multipop(int k) {
while (top != null) {
for (int i = 0; i <= k; i++) {
this.pop();
}
}
}
答案 0 :(得分:6)
while
循环直到堆栈耗尽,这可能不是您想要的。如果要检查堆栈中是否有元素,请使用if
语句。this.pop()
四次。while
替换为if
,也只会检查堆栈中是否有一个元素,但您可以调用pop()
多次。您应该在循环内部进行检查,或者在pop()
。答案 1 :(得分:3)
这有一些问题:
for (... ; i<=k && stack.canPop(); ...
这应该遇到异常或无限循环,因为第一个循环确保仍然存在一个非顶空的“top”变量,然后它将它引导到从0:k开始的第二个循环。
答案 2 :(得分:3)
看起来像是一个错误。
如果k=1
,您将使用i=0
和i=1
完成循环。您可以通过将i<=k
更改为i<k
答案 3 :(得分:0)
你是一个人。你想要
for(int i =0; i < k; i++)
如果有更多问题,您需要提供更多代码和问题。
答案 4 :(得分:0)
1,它循环(k + 1)次,从0到k。 2,在几次弹出之后,top可能为null。所以它需要一直检查顶部。
可以修改如下:
public void multipop(int k){
for (int i = 0; top != null && i < k; i++) {
this.pop();
}
}