Java에서 배열을 사용하여 스택을 구현하려고합니다. My 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());
}
}
그것은 https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html –
정적 키워드를 사용하여 관하여를 – khelwood
'Stack' 객체를 담을 변수가 필요합니다.'Stack.push();' 'Stack s = new Stack (5);'그러면 메소드는's'에서 작동 할 것입니다. – ajb