У вас есть несколько проблем, которые нужно сначала исправить, чтобы ваш код компилировался.
Вы используете объект класса Stack
с помощью Stack s = new Stack();
, поэтому вам don't
нужно, чтобы ваши push()
и pop()
методы были static
, поэтому избавьтесь от static
из объявления метода,Это будет выглядеть как
void push(int data)
{
if (top>=max -1)
System.out.println("OVerflow");
else
a[++top]= data;
}
Другая проблема - ваш pop()
метод.Вы указали тип возврата int
.поэтому он всегда должен возвращать int
.Последняя строка ваших методов должна содержать возвращаемое значение, равное int
.Поэтому вам следует изменить значение pop()
на что-то вроде
int pop() {
int poppedValue = 0;
if (top < 0)
System.out.println("Empty Stack");
else {
poppedValue = a[--top];
}
return poppedValue;
}
Ваш класс main
не имеет доступа к int[] a
класса Stack
, однако вы пытаетесь повторить его.Вы можете добавить метод в ваш класс Stack
, чтобы он возвращал вам массив int[] a
.
public int[] getStack() {
return a;
}
Так что после push()
и pop()
в вашем методе main()
вы можете получить массив
int [] a = s.getStack();
Ваша последняя проблема в цикле for
.Вы должны указать тип данных i
.поэтому ваш цикл должен выглядеть следующим образом.
int [] a = s.getStack();
for (int i =0; i< 10;i++)
{
System.out.println(a[i]);
}
Также обратите внимание, что вы получаете a
array
от Stack
объекта s
ваше тело цикла сможет получить доступ к a[i]
ранее, этобыла бы ошибка компиляции.