Хорошо, я написал свой собственный класс стека, не используя встроенный класс.Класс стека содержит объекты List of Entry и размер стека (оба поля экземпляра).В классе стека у меня есть метод push, который добавляет объект Entry в стек.При добавлении размер стека должен увеличиваться на единицу.
Это отлично работает, я проверил, и это работает.Я, вероятно, должен также объяснить, что содержится в моем классе Entry.Класс Entry в основном имеет конструктор, который принимает число и хранит его.
Так что для класса Stack мой метод push выглядит следующим образом:
public class Stack{
private List<Entry> entries = new ArrayList<Entry>();
private int size;
public void push(Entry entry)
{
if(entry == null)
String message = "The Parameter given was illegal(null)";
throw new IllegalArgumentException(message);
}
entries.add(entry) // adds the entry object to the stack (or entries List)
size ++ // increments the size by 1.
}
Опять же, это прекрасно работает, я могу добавлять объекты Entry в мой стек и увеличивать размер, как следует,Теперь нам нужно создать новый класс с именем NumberStack, который в основном скрывает детали и вызывает метод push в классе стека из этого класса.Я покажу вам, как выглядит мой класс NumberStack:
public class NumberStack {
private Stack numStack = new Stack();
public void push(final float i) {
numStack.push(new Entry(i));
}
Итак, в основном он делает то же самое, что и метод push в классе Stack, но скрывает детали.Теперь это не работает!Ничто не добавляется в стек (список записей), когда я вызываю этот метод.Если я пытаюсь нажать два числа с помощью моего метода Push NumberStack.он должен вызвать метод push в классе Stack и добавить объекты Entry.Но ничего не происходит.Опять же, если я просто нажму прямо в своем классе стека, он будет работать отлично.
Почему метод push в моем классе NumberStack не работает?Это не имеет никакого эффекта, ничто не добавляется в стек.
РЕДАКТИРОВАТЬ:
Я пытался проверить это:
public static void main(String[] args){
System.out.println("Debugging...");
NumStack numStack = new NumStack();
Stack stack = new Stack();
System.out.println("Size before pushing from NumStack = " + stack.size());
numStack.push(5);
System.out.println("Size after pushing from NumStack method push = " + stack.size());
stack.push(new Entry(5));
System.out.println("Size after pushing directly from Stack = " + stack.size());
}
Вышло выше:
Размер до нажатия из NumStack = 0
Размер после нажатия из метода NumStack push = 0
Размер после нажатия непосредственно из стека = 1
Любая помощь очень ценится Спасибо.