Versucht zu implementieren-Array-Stack in Java aber Push funktioniert nicht

Ich arbeite seit ein paar Stunden nun versucht, ein Stack basierend auf einem Array erstellt und implementiert. Ich habe mehrere Quellen, und es sieht aus wie meine Klasse ArrayStack richtig aufgebaut ist. Allerdings, wenn ich ausführen, Debuggen, 'Kopf' bleibt null und die Größe & sp zurück auf 0 gehen: also nichts ist eigentlich immer auf den stack geschoben. Kann mir jemand helfen zu verstehen, was habe ich falsch implementiert?

Hier ist meine Klasse ArrayStack:

public class ArrayStack <T>{
    protected int sp; //empty stack
    protected T[] head; //array
    private int size;

    @SuppressWarnings("unchecked")
    public void stack(T t){
        sp = -1;
        size = 24; //sets the default size of the stack
        head = (T[]) new Object [size];
    }
    public boolean isFull(){
        return sp == -1;
    }
    public void push (T t){
        if (!isFull())
            head[++sp] = t;
    }
    public T pop (){
        if (isFull()){
            return null;
        }
        else 
            return head[sp--];  //LINE 30
    }
}

Hier ist meine Main-Methode:

public class StacksAndQsMain {

    public static void main(String[] args) {
        //Array Implementation
        ArrayStack<String> as  = new ArrayStack<String>();

        String s = "Hello";
        String s1 = "World";
        String s2 = "Again";

        as.push(s);
        as.push(s1);
        as.push(s2);

        System.out.println (as.pop()); //LINE 15
        System.out.println();
        System.out.println (as.pop());
        System.out.println();
        System.out.println (as.pop());
        System.out.println();
    }

}

Schließlich, hier ist mein stack trace:

Exception in thread "main" java.lang.NullPointerException
at stackAndQs.ArrayStack.pop(ArrayStack.java:30)
at stackAndQs.StacksAndQsMain.main(StacksAndQsMain.java:15)

Meine Variablen an: public void push (T t)

this       ArrayStack<T>  (id=17)   
head       null 
size       0    
sp     0    
t      "Hello" (id=18)
InformationsquelleAutor Chris | 2013-03-14
Schreibe einen Kommentar