java初学,Java完全参考手册(第8版) 第132页实例代码报错
package java完全参考手册.类;class stack {
int stck[] = new int[4];
int tos;
// initialize top-of-stack
// 初始化top-of-stack
stack () {
this.tos = -1;
}
// push an item onto the stack
// 把项压入堆栈
void push (int item) {
if (this.tos == 9) {
System.out.println("stack is full");
} else {
this.stck[++this.tos] = item;
}
}
// pop an item form the stack
// 流行一个项目形成堆栈
int pop () {
if (this.tos < 0) {
System.out.println("stack underflow.");
return 0;
} else {
return this.stck[this.tos--];
}
}
}
public class textstack {
public static void main(String[] args) {
stack mystack1 = new stack();
stack mystack2 = new stack();
// push some number onto the stack.
// 把一些压入堆栈.
for (int i = 0; i < 10; i++) {
mystack1.push(i);
}
for (int i = 10; i < 20; i++) {
mystack2.push(i);
}
// pop those numbes off the stack.
// 流行那些麻木的堆栈。
System.out.print("stack in mystack1: ");
for (int i = 0; i < 10; i++){
System.out.println(mystack1.pop());
}
System.out.print("stack in mystack2: ");
for (int i = 0; i < 10; i++){
System.out.println(mystack2.pop());
}
}
}
如题:一直没找到原因,eclipse也没提示信息!
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at java完全参考手册.类.stack.push(textstack.java:19)
at java完全参考手册.类.textstack.main(textstack.java:44)
求高手帮我看看!
找到原因了,Array范围,结贴!
回答:
因为int stck[] = new int[4];
这句已经设置了栈的最大容量了,
所以
void push (int item) { if (this.tos == 9) {
System.out.println("stack is full");
} else {
this.stck[++this.tos] = item;
}
}
方法是有问题的。
以上是 java初学,Java完全参考手册(第8版) 第132页实例代码报错 的全部内容, 来源链接: utcz.com/p/172957.html