gpt4 book ai didi

java - 将数组从构造函数传递给方法?

转载 作者:行者123 更新时间:2023-11-30 07:50:21 26 4
gpt4 key购买 nike

当我尝试运行它时,我得到:线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 0我想在构造函数 SimpleIntegerStack 中初始化数组,并稍后在后面的方法中使用它...

package datastructures.simple_integer_stack;

public class SimpleIntegerStack {
int maxSize;
private int stack[]=new int[maxSize];

public SimpleIntegerStack(int maxSize) {

int stack[]= new int [maxSize];
}

public void push(int element) {
int i=-1;
boolean stop = false;

do{
if(stack[i]==0){
stack[i]=element;
stop=true;
}
i++;

}while(stop=false && i<stack.length);

}

public void pop() {
int i=0;

while(stack[i]!=0 && i<stack.length){
i++;
}
if(i!=0)
stack[i] = 0;
}

public int top() {
int stacktop=-1;
int i=0;
boolean empty = true;
while(stack[i]!=0 && i<stack.length-1){
i++;
empty=false;
}
if(i==stack.length-1){
if (stack[i+1]==0){
empty=true;
}
else stacktop=stack[i+1];
}
if(empty=false)
stacktop=stack[i-1];
return stacktop;
}

}

最佳答案

从下面的代码中删除“int”:

public SimpleIntegerStack(int maxSize) {

// dont do this: int stack[]= new int [maxSize];
stack = new int[maxSize];
}

您所做的是在构造函数中声明一个局部变量,stack。该变量恰好与实例变量同名。当构造函数完成时,局部变量超出范围。

因此,实例变量 stack 不受构造函数调用的影响。

关于java - 将数组从构造函数传递给方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33396427/

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