我想在Java中使用數組實現堆棧。我的Stack類包含非靜態方法push,pop,peek和isempty。我想測試堆棧實現,在主類中的非靜態main方法中實例化堆棧。當我嘗試這樣做時,出現錯誤「無法從靜態上下文中引用非靜態方法push(int)」 我在做什麼錯了?在Java中的堆棧實現
Stack.java
public class Stack {
private int top;
private int[] storage;
Stack(int capacity){
if (capacity <= 0){
throw new IllegalArgumentException(
"Stack's capacity must be positive");
}
storage = new int[capacity];
top = -1;
}
void push(int value){
if (top == storage.length)
throw new EmptyStackException();
top++;
storage[top] = value;
}
int peek(){
if (top == -1)
throw new EmptyStackException();
return storage[top];
}
int pop(){
if (top == -1)
throw new EmptyStackException();
return storage[top];
}
}
Main.java
public class Main {
public static void main(String[] args) {
new Stack(5);
Stack.push(5);
System.out.println(Stack.pop());
}
}
這是關於使用static關鍵字https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html –
'Stack x = new Stack(5);'then'x.push();'和'x.pop();' – khelwood
您需要一個變量來保存'Stack'對象。 'Stack s = new Stack(5);'然後你的方法將在's'上運行。 – ajb