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

回到顶部