我需要根据以下代码编写一个名为StackEmptyException的异常类?它应该是RuntimeException类的子类。
public interface IStack {
public Object pop() throws StackEmptyException;
public void push(Object o);
public boolean isEmpty();
public int size();
public void clear();
}
这就是我需要写的全部内容吗?:
public class StackEmptyException extends RuntimeException {
public StackEmptyException(){
super();
}
}
然后,我如何编写IStack接口的实现,称为Stack。如果用户尝试从空列表中弹出(),该类应生成适当的异常。您的堆栈应该由一个对象数组支持,这些对象应该在它变满的情况下调整大小。
我是初学者所以请解释你的解决方案,好像我是一个三岁的孩子:)
答案 0 :(得分:0)
实施isEmpty()
后,您可以执行pop()
这样的操作:
public Object pop() throws StackEmptyException{
if(isEmpty()){
throw new StackEmptyException();
}else{
//
// return stackLastElement;
}
}
在push方法中,你需要检查你的向量是否有空间来推送对象:
public void push(Object o){
//...
if(allPositionsInStackAreFille){
//extend Your Stack
}
// put the object onto right place
}
答案 1 :(得分:0)
现在需要一个实现接口IStack
的类(当接口的I
太旧时)。
像这样的东西
public class MyStack implement IStack{
public Object pop() throws StackEmptyException{
if(size==0){throw new StackEmptyException();}
//otherwise return the last component. return stack[size--];
};
public void push(Object o)throws StackOverFlow{if(size==stack.length-1){throw new StackOverFlow();}};
public boolean isEmpty(){return size==0;};
public int size(){return size;};
public void clear(){size=0;};
///////////////
private Object[] stack;
private final static default_stack_size=16;
private boolean can_extended=false;
public MyStack(){stack=new Object[16];}
public MyStack(int size){stack=new Object[size];}
}
它还取决于您希望实现堆栈的方式,也许您希望将其作为大小或许多东西使其可扩展或静态。