title: java.lang.ArrayIndexOutOfBoundsException: 0 (stack implementation)
body: <p>I'm implementing a stack application, however every time I push an item onto the stack I receive a java.lang.ArrayIndexOutOfBoundsException: 0.</p>
  
  <pre><code>//stack constructor
  public Stack() {
      stack = new int[STACKSIZE];
      top = 0;
  }
  
  
  //push code
  public void push(int n) throws Exception {
      if(top == STACKSIZE) {
          throw new Exception("Stack Overflow");
      } else {
          stack[top++] = n;
      }
  }
  
  
  
  //stack size variable
  protected int STACKSIZE;
  
  //get stack size
  public int getStackSize() {
      return STACKSIZE;
  }
  
  //set stack size
  public void setStackSize(int size) {
      STACKSIZE = size;
  }
  
  //declaring a new stack object in the GUI class
  private Stack stack = new Stack();
  
  //variable for default stack size (class level variable)
  private int stackSize = 0;
  
  //setting the size
  stack.setStackSize(stackSize);
  
  //code where push is being used (located within a jbutton event)
  try {
      int size = stack.getStackSize();
      stack.setStackSize(++size);
      String inputNumber = EquationLabel.getText().replaceAll(remove, replaceWith);
      int number = Integer.parseInt(inputNumber);
      clear();
      stack.push(number);
  } catch (NumberFormatException error) {
      MessageLabel.setText("Error: " + error.getMessage());
      error.printStackTrace();
  } catch (Exception error) {
      MessageLabel.setText("Error: " + error.getMessage());
      error.printStackTrace();
  }
  
  //stack trace output
  java.lang.ArrayIndexOutOfBoundsException: 0
  at Stack.Stack.push(Stack.java:66)
  at calculator.Calculator.actionPerformed(Calculator.java:268)
  at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
  at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
  at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
  at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
  at               javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
  at java.awt.Component.processMouseEvent(Component.java:6505)
  at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
  at java.awt.Component.processEvent(Component.java:6270)
  at java.awt.Container.processEvent(Container.java:2229)
  at java.awt.Component.dispatchEventImpl(Component.java:4861)
  at java.awt.Container.dispatchEventImpl(Container.java:2287)
  at java.awt.Component.dispatchEvent(Component.java:4687)
  at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
  at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
  at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
  at java.awt.Container.dispatchEventImpl(Container.java:2273)
  at java.awt.Window.dispatchEventImpl(Window.java:2713)
  at java.awt.Component.dispatchEvent(Component.java:4687)
  at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
  at java.awt.EventQueue.access$000(EventQueue.java:101)
  at java.awt.EventQueue$3.run(EventQueue.java:666)
  at java.awt.EventQueue$3.run(EventQueue.java:664)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
  at java.awt.EventQueue$4.run(EventQueue.java:680)
  at java.awt.EventQueue$4.run(EventQueue.java:678)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
  at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
  at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
  at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
  at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)   
  </code></pre>
  
  <p>Thanks for any help/guidance, I'm really unsure on this one.</p>