首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OutOfBoundsException入栈

OutOfBoundsException入栈
EN

Stack Overflow用户
提问于 2014-10-07 12:32:49
回答 2查看 64关注 0票数 0

我对ArrayIndexOutOfBoundsException有一个问题,它总是出现在我的程序中。我怎么才能尝试{}?

代码语言:javascript
复制
@Override
    public Object pop() {
        if (stackIsEmpty()) {
            System.err.println("underflow");
            return null;
        } else {
            try {
                Object temp = stack[top];
                stack[top--] = null;
                System.out.println("top is " + top);
                return temp;
            } catch (ArrayIndexOutOfBoundsException e) {
                return "exception";
            }
        }
    }

添加了rest类的代码(我在stackisEmpty()中与-1进行了比较):

代码语言:javascript
复制
public class ArrayStackImpl implements ArrayStack {
    private int top = -1;
    private int maxLength;
    public Object stack[] = new Object[maxLength];

    public ArrayStackImpl(int maxLength) {
        this.maxLength = maxLength;
    }

    @Override
    public boolean stackIsEmpty() {
        return (top < 0);
    }

    @Override
    public void push(Object o) {
        if ((top >= maxLength - 1))
            System.err.println("overflow");
        else
            try {
                stack[++top] = o;
            } catch (ArrayIndexOutOfBoundsException e) {
            }
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-07 12:43:24

在弹出非空堆栈时,top可能变成-1 (用于“空堆栈”)。所以

代码语言:javascript
复制
private int top = -1;

public boolean stackIsEmpty() {
    return top < 0; // != -1
}

在构造函数中执行字段初始化。在该最大长度未被初始化之前,和0。此外,您不需要使用maxlength作为字段。stack.length == maxlength

代码语言:javascript
复制
public Object[] stack; 

public ArrayStackImpl(int maxLength) {
    stack = new Object[maxLength];

(我使用了更传统的表示法Object[]__。)

票数 1
EN

Stack Overflow用户

发布于 2014-10-07 12:39:06

将顶部初始化为-1。不要抓住ArrayIndexOutOfBoundsException,找出原因。另外,您的stackIsEmpty应该检查top是否等于-1。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26236108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档