写一个简单的程序来使用堆栈

时间:2013-11-03 18:32:25

标签: java stack

我正在尝试编写一个简单的程序来使用堆栈 我写了一个定义方法的类:

    public interface Stack<E>{
         public int size();

        public boolean isEmpty();

       public E top();

      public void push(E element);
      public E pop()throws EmptyStackException;
  }

和另一个实现Stack的类:

    public abstract class myStack<E> implements Stack<E>{

private final E s[];
int t=0;

public myStack() {
    this.s = (E[]) new Object[100];
}


@Override
public int size(){
    return t;
}


@Override
public boolean isEmpty(){
    switch(size()){
        case 0:
            return true;
    }
    return false;
}


@Override
public E top() {
    if(isEmpty())
        throw new EmptyStackException();
    return s[t-1];
}

@Override
public void push(E element) {
    if(isEmpty())
        s[0]= element;
    else
        s[t]= element;
    t++;
}


@Override
public E pop() {
            E x;
    if(isEmpty())
        throw new EmptyStackException();
    else{
        x = s[t-1];
        s[t-1] = null;
        t--;
    }
    return x;
}
}

为了测试这些代码,我编写了另一个包含main()的类:

   public static void main(String[] args) {
    // TODO code application logic here

    Stack<Integer> s;
    s.push(1);
    s.push(2);
    System.out.println(s.pop());
}

但是当我运行程序时,它给了我这个错误“线程中的异常”主“java.lang.RuntimeException”

我已经多次检查过这个程序,但我真的无法理解是什么问题

谁能帮助我吗? 感谢您的提前关注

1 个答案:

答案 0 :(得分:1)

从类声明abstract中删除myStack关键字,然后在main中执行以下操作:

public static void main(String[] args) {
    // TODO code application logic here

    Stack<Integer> s=new myStack<Integer>();
    s.push(1);
    s.push(2);
    System.out.println(s.pop());
}

现在应该是编译时错误,说“Variable is not initialized”。

<强> EDIT:

throws EmptyStackException添加到top()界面和Stack课程中的myStack。同样,throws EmptyStackException类中的pop()函数的myStack不在界面中,它已经存在。

相关问题