这让我非常困惑和沮丧。我已经问过一个关于同一程序的问题 here 。离开该代码,我在堆栈上遇到了另一个问题。这是一个使用上一篇文章中称为 block 的堆栈数组的方法:
static void pileOnto(int sBlock, int rBlock)
{
boolean flag = true;
while ((!blocks[rBlock].empty()) && (flag))
{
retainer.push((Integer)blocks[sBlock].pop());
if (((Integer)blocks[rBlock].peek()).intValue() == sBlock) {flag = false;}
}
while (((Integer)blocks[rBlock].peek()).intValue() != rBlock)
{
returnBlock(((Integer)blocks[rBlock].pop()).intValue());
}
}
第一个 while 循环应该在堆栈为空时结束,或者在弹出的最后一个整数与 sBlock 相同时结束。我遇到的问题是blocks[rBlock].empty()永远不会返回true,即使程序因尝试弹出blocks[rBlock]而崩溃,这意味着堆栈中不能有任何东西。有人可以向我解释一下发生了什么事吗?
最佳答案
在第一个循环中,您正在测试一个堆栈(即 blocks[rBlock].empty()
)并弹出另一个堆栈(即 blocks[sBlock].pop()
)。
关于java - 即使堆栈没有对象,也不返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7564155/