package howto; import java.awt.*; public class Stack extends Panel { private TextField [] _rgtf = new TextField [5]; private static final int DELTA = 5; private double [] _rgd = new double [DELTA]; private int _n = -1; public Stack() { setLayout(new GridLayout(0, 1, 5, 5)); for (int i = 0; i < _rgtf.length; i++) { _rgtf[i] = new TextField(); _rgtf[i].setEditable(false); add(_rgtf[i]); } } public void display() { for (int i = _n; _n - i < _rgtf.length; i--) { if (i > -1) _rgtf[_n - i].setText(String.valueOf(_rgd[i])); else _rgtf[_n - i].setText(""); } } public void push(double d) throws StackException { if (_n + 1 > _rgd.length - 1) { double [] rgd = new double [_rgd.length + DELTA]; System.arraycopy(_rgd, 0, rgd, 0, _rgd.length); _rgd = rgd; } _rgd[++_n] = d; } public double pop() throws StackException { if (_n < 0) { throw new StackException("stack empty"); } return _rgd[_n--]; } public int count() { return _n + 1; } }