集合堆栈是空的方法

时间:2016-09-20 19:59:09

标签: java

了解集合堆栈,希望这是足够的信息,但基本上它一直给我一个错误。当我使用我的pop方法但显示peek应该足够时,也会显示此错误。 错误是

Exception in thread "main" McCracken_A06Q1$EmptyCollectionException: 
The stack is empty.

throw new EmptyCollectionException("stack");  

以及在我的主要内容中使用peek或pop方法的错误。

    public T peek() throws EmptyCollectionException {
        if (isEmpty()) 
            throw new EmptyCollectionException("stack");


            return stack[top - 1];

    }

    /**
     * Returns true if this stack is empty and false otherwise.
     * 
     * @return true if this stack is empty
     */
    public boolean isEmpty() {
        if (top >0) {
            return false;
        } else {
            return true;
        }
    }

我认为这是我的公共静态类EmptyCollectionException,但我没有收到任何错误

public static class EmptyCollectionException extends RuntimeException {
    /**
     * Sets up this exception with an appropriate message.
     * 
     * @param collection
     *            the name of the collection
     */
    public EmptyCollectionException(String collection) {
        super("The " + collection + " is empty.");
    }
}

编辑:供参考..这是我的主要内容     public static void main(String [] args){         ArrayStack stack = new ArrayStack();

    System.out.println("STACK TESTING");

    stack.push(3);
    stack.push(7);
    stack.push(4);
    System.out.println(stack.peek());
    stack.pop();
    stack.push(9);
    stack.push(8);
    System.out.println(stack.peek());
    System.out.println(stack.pop());
    System.out.println(stack.peek());
    System.out.println(stack.pop());
    System.out.println(stack.pop());
    System.out.println(stack.pop());
    System.out.println(stack.pop());

    System.out.println("The size of the stack is: " + stack.size());
    System.out.println("The stack contains:\n" + stack.toString());
}

2 个答案:

答案 0 :(得分:0)

多次调用pop会引发未被捕获的运行时异常,从而终止程序。

请尝试以下代码:

try {
    // Stack operations that might throw an EmptyCollectionException go here
} catch (EmptyCollectionException e) {
    e.printStackTrace();
    // Handle exception here
}

答案 1 :(得分:0)

我计算5 push es和6 pop s。因此,您的例外有效(假设它在最后pop上)。