这是令人非常困惑和令我沮丧的。我已经问过关于同一个程序here的一个问题。从代码开始,我遇到了Stack的另一个问题。下面是一个方法,该方法是使用叠层的阵列,称为块,从前面的帖子:堆栈没有返回空,即使它没有对象
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。我遇到的问题是块[rBlock] .empty()永远不会返回true,即使程序崩溃试图弹出块[rBlock],也就是说栈中不能有任何东西。有人可以向我解释发生了什么事吗?
我假设你不能使用泛型,拆箱,删除括号或'break'使代码更具可读性。 –