Java堆栈方法(MULTIPOP)初学者的java(Java Stack method (mult

2019-10-18 09:07发布

我试着写一个Java方法大跳“多弹出”关闭堆栈。

它应该在执行“弹出”操作stack对象k的次数。 这是我在想什么,但它并不完全正确。 任何帮助了吗?

public void multipop(int k) {
    while (top != null) {
        for (int i = 0; i <= k; i++) {
            this.pop();
        }
    }
}

Answer 1:

看起来像一个差一错误。

如果k=1 ,你会去通过循环与i=0i=1 。 可以通过改变解决这个i<=ki<k



Answer 2:

  1. 您执行while直到堆栈用尽,这可能不是你想要的循环。 如果要检查是否有堆栈中的元素,使用if语句。
  2. 在循环中,你从0到迭代K,包容性。 这意味着,如果k = 3,则经过0,1,2和3,从而调用this.pop()四次。
  3. 即使你更换whileif ,你只检查是否有一个元素是在栈中,但你可以调用pop()多次。 你应该做循环内的支票或移动内部的检查pop()
  4. 压痕是可怕的:)


Answer 3:

没有与此的几个问题:

  1. 括号应更好地格式化[先来看看导致我相信不匹配]
  2. 您的空情况下检查应在的中间为循环: for (... ; i<=k && stack.canPop(); ...
  3. 你需要一个方法来检查,以确保有,你可以弹出一个项目。
  4. 由于对方的回答状态,有一个错误的了,如果你想弹出k个项目,那么condiction应该是我<K。

这应该遇到意外事件或无限循环,因为第一循环确保仍有一个“顶”变量不为空,然后将其引导到第二循环,从0:K。



Answer 4:

您可以通过一个已经开。 你要

 for(int i =0; i < k; i++)

如果有更多的问题,您需要提供更多的代码和问题。



Answer 5:

第一,它循环(K + 1)倍,从0到k。 2,经过多次持久性有机污染物,有可能是顶部为空。 因此,它需要检查顶部所有的时间。

它可作如下修改:

公共无效MULTIPOP(INT K){

    for (int i = 0; top != null && i < k; i++) {
        this.pop();
    }

}



文章来源: Java Stack method (multipop) Beginner java