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

标签 java stack

这让我非常困惑和沮丧。我已经问过一个关于同一程序的问题 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/

相关文章:

java - 如何在 jsoup 中使用选择器语法获取属性

JAVA 8没有jrunscript,只有jjs

C代码堆栈损坏更改变量

c - 这容易受到堆栈溢出的影响吗?

c - 我在 C 中创建了一个 push 和 pop 函数,但不知道如何按顺序打印它们

java - 适用于 java 的 azure 管理 sdk 示例

java双向链表删除节点

Java:对外部构造对象的依赖注入(inject)?

c++ - 合并和快速排序 - 堆栈重载

java - 节点链表的堆栈