我實施堆疊應用,但是每次我推一個項目到堆棧我接收java.lang.ArrayIndexOutOfBoundsException:0.java.lang.ArrayIndexOutOfBoundsException:0(堆棧實現)
//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)
感謝任何幫助/指導,我真的不確定這一個。
哪裏是U創建堆棧變量? – redDevil 2012-03-23 04:10:31
你在哪裏創建數組? – 2012-03-23 04:16:59
堆棧變量正在gui類中創建。我會發布更多的代碼。 – Ari 2012-03-23 04:22:19