我一直在工作了幾個小時,現在試圖獲得基於數組構建和實現的堆棧。我檢查了幾個來源,看起來像我的ArrayStack類正確構造。但是,當我運行調試時,'head'保持爲空,並且大小爲& sp回到0:因此,沒有任何內容實際上被推入堆棧。有人能幫助我瞭解我實施的不正確嗎?試圖在Java中實現數組堆棧,但推不工作
這裏是我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
}
}
這是我的主要方法:
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();
}
}
最後,這裏是我的堆棧跟蹤:
Exception in thread "main" java.lang.NullPointerException
at stackAndQs.ArrayStack.pop(ArrayStack.java:30)
at stackAndQs.StacksAndQsMain.main(StacksAndQsMain.java:15)
我在公共無效變量推(T t)
this ArrayStack<T> (id=17)
head null
size 0
sp 0
t "Hello" (id=18)
謝謝你的時間和解釋!我只是盯着Google的isFull()來找出我錯過的東西。不勝感激! – Chris 2013-03-14 00:54:47
@ChristopherDay很高興我能幫到你。 – 2013-03-14 00:57:32