私はJavaで配列を使用してスタックを実装しようとしています。私のスタッククラスは、非静的メソッドpush、pop、peek、isemptyで構成されています。私はスタック実装をテストして、メインクラス内の静的でないメインメソッドでスタックをインスタンス化したいと考えています。私がしようとするとエラーが発生する"非静的メソッド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());
}
}
それはhttps://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html –
staticキーワードを使用してについてですが – khelwood
'Stack'オブジェクトを保持するためには変数が必要です。' Stack' =新しいスタック(5); '' x.push(); ''と 'x.pop(); 'Stack s = new Stack(5);'あなたのメソッドは 's'で動作します。 – ajb