В вашем конструкторе для arrayStack
вы должны установить top
на 0, а не на -1. В вашем методе isEmpty
вы даже проверяете, что top == 0
, поэтому ясно, что top == 0
означает пустой, а не top == -1
. Вот почему вы всегда пропускаете последний элемент, когда извлекаете значения из стека; установка первого элемента с шагом top
в 0.
О, и я пропустил то, что сказал Том ниже: уменьшив значение top
до того, как вы найдете значение в верхней части, вернет неправильный элемент. Его код ниже предпочтительнее, но для начинающего это может быть проще для понимания:
public String pop() {
String topValue = storage[top];
top--;
return topValue;
}