gpt4 book ai didi

java - 无法找出堆栈中的 ArrayIndexOutofBoundsException 错误(推送)

转载 作者:行者123 更新时间:2023-12-01 19:56:36 24 4
gpt4 key购买 nike

我正在创建一个堆栈程序,并在尝试推送时遇到此错误 ArrayIndexOutofBoundsException。它从 main 获取 topofindex 值和数据。当我输入数组大小以使用scanner时,即使值为3,它仍然遇到错误。

public class ArrayBaseStack {
private int topIndex = -1;
private int inputArrNum;
private int inputData;
private int stackArr[] = new int[inputArrNum];
public void push(int inputData) {
this.inputData = inputData;
topIndex++;
stackArr[topIndex] = inputData;
}
public void pop() {
if (isEmpty()) {

}
else {
System.out.println(stackArr[topIndex]);
topIndex--;
}

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayBaseStack arrayBaseStack = new arrayBaseStack();
arrayBaseStack.inputArrNum = sc.nextInt();



for (int i = 0; i < arrayBaseStack.inputArrNum; i++) {
String stackOrder = sc.next();
int data =0;
if(stackOrder.equals("push")){
data = sc.nextInt();
arrayBaseStack.push(data);
}
else if (stackOrder.equals("pop")){
arrayBaseStack.pop();
}
else
System.out.println("Wrong Direction.");

}

结果:

3
push 3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0

最佳答案

在初始化 ArrayBaseStack 类时,inputArrNum 为 null,因此这一行:

private int stackArr[] = new int[inputArrNum];

创建一个大小为0的新数组。

您应该更改ArrayBaseStack以拥有一个获取数组大小的构造函数,然后在执行任何其他操作之前初始化该数组。这将防止您当前遇到的ArrayIndexOutOfBoundsException。例如

...
public ArrayBaseStack(int size) {
stackArr[] = new int[size];
}
...

关于java - 无法找出堆栈中的 ArrayIndexOutofBoundsException 错误(推送),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59036081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com