Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java堆栈方法(MultiPP)初学者Java_Java_Methods_Stack - Fatal编程技术网

Java堆栈方法(MultiPP)初学者Java

Java堆栈方法(MultiPP)初学者Java,java,methods,stack,Java,Methods,Stack,我正试图编写一个Java方法来实现堆栈中的多重弹出 它应该对堆栈对象执行pop操作k次。这是我的想法,但不完全正确。有人帮忙吗 public void multipop(int k) { while (top != null) { for (int i = 0; i <= k; i++) { this.pop(); } } } 这方面存在一些问题: 括号的格式应该更好[第一眼让我相信不匹配] 你的空情况的检查应该在f

我正试图编写一个Java方法来实现堆栈中的多重弹出

它应该对堆栈对象执行pop操作k次。这是我的想法,但不完全正确。有人帮忙吗

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

这方面存在一些问题:

括号的格式应该更好[第一眼让我相信不匹配]
你的空情况的检查应该在for循环的中间:for…i这方面存在一些问题:

括号的格式应该更好[第一眼让我相信不匹配]
你的空情况的检查应该在for循环的中间:for…i看起来像是一个一个接一个的错误


如果k=1,您将通过i=0和i=1的循环。您可以通过更改i看起来像一个off-by-one错误来修复此问题


如果k=1,您将通过i=0和i=1的循环。您可以通过更改i来解决此问题,您将关闭一个。你想要

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

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

你只需要一个。你想要

 for(int i =0; i < k; i++)
如果有更多的问题,您需要提供更多的代码和问题

执行while循环直到堆栈耗尽,这可能不是您想要的。如果要检查堆栈中是否有元素,请使用If语句。 在循环中,从0迭代到k(包括k)。这意味着如果k=3,则经过0、1、2和3,然后调用This.pop四次。 即使将while替换为if,也只检查堆栈上是否有一个元素,但可以多次调用pop。您应该在循环内执行检查或将检查移动到pop内。 压痕很可怕: 执行while循环直到堆栈耗尽,这可能不是您想要的。如果要检查堆栈中是否有元素,请使用If语句。 在循环中,从0迭代到k(包括k)。这意味着如果k=3,则经过0、1、2和3,然后调用This.pop四次。 即使将while替换为if,也只检查堆栈上是否有一个元素,但可以多次调用pop。您应该在循环内执行检查或将检查移动到pop内。 压痕很可怕:
首先,它循环k+1次,从0到k。 第二,多次弹出后,top可能为空。所以它需要随时检查顶部

它可以修改如下:

公共空间多品脱k{

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

}

1,它循环k+1次,从0到k。 第二,多次弹出后,top可能为空。所以它需要随时检查顶部

它可以修改如下:

公共空间多品脱k{

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

}

谢谢大家!一个接一个的解决了它!这应该被标记为“家庭作业”。谢谢大家!一个接一个的解决了它!这应该被标记为“家庭作业”。虽然我感谢大家的认可,但我承认其他一些答案解决了我的答案没有解决的重要问题。例如,while循环将继续运行内部For循环,直到堆栈为空,换句话说,直到top==null。正如其他人所建议的,这可以通过将while更改为if并将其移动到for循环交换位置来解决。虽然我很欣赏这种认可,但我承认其他一些答案解决了我的答案没有解决的重要问题。例如,while循环将继续运行内部For循环,直到堆栈为空,换句话说,直到top==null。正如其他人所建议的,这可以通过将while更改为if并将其移动到for循环交换位置内来修复。