即使堆栈没有对象,堆栈也不会返回空

时间:2011-09-27 04:19:29

标签: java stack

这令我感到非常困惑和沮丧。我已经就同一个计划提出了一个问题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循环应该在堆栈为空时结束,或者当它弹出的最后一个Integer与sBlock相同时。我遇到的问题是块[rBlock] .empty()永远不会返回true,即使程序因尝试弹出块[rBlock]而崩溃,这意味着堆栈中不能有任何内容。有人可以向我解释发生了什么事吗?

1 个答案:

答案 0 :(得分:2)

在第一个循环中,您正在测试一个堆栈(即blocks[rBlock].empty())并弹出一个不同的堆栈(即blocks[sBlock].pop())。