了解集合堆栈,希望这是足够的信息,但基本上它一直给我一个错误。当我使用我的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());
}
答案 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
上)。