Java堆栈方法(MultiPP)初学者Java
我正试图编写一个Java方法来实现堆栈中的多重弹出 它应该对堆栈对象执行pop操作k次。这是我的想法,但不完全正确。有人帮忙吗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
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循环交换位置内来修复。