gpt4 book ai didi

java - 通用数组索引越界

转载 作者:行者123 更新时间:2023-11-30 08:51:51 25 4
gpt4 key购买 nike

好的,这是我的问题。我正在学习使用通用类和方法。我想制作一个通用数组列表和方法,通过选择的索引添加/删除元素。我根本不知道该怎么做。我的示例是调用 IndexOutOfBoundsException。

欢迎任何帮助。提前谢谢。

类 klasa3:

public class klasa3<E> {
private java.util.ArrayList<E> list = new java.util.ArrayList<>();



public klasa3(int initSize){

}


public int getSize() {
return list.size();
}

public E peek() {
return list.get(getSize() - 1);
}

public void push(E o,int indeks) {
o = list.get(indeks);
list.add(o);
}

public E pop(int indeks) {
E o = list.get(indeks);
list.remove(indeks);
return o;
}

public boolean isEmpty() {
return list.isEmpty();
}

@Override
public String toString() {
return "stack: " + list.toString();
}
}

主类:

public class klasa2 {
public static void main(String[] args ) {


klasa3 stak2 = new klasa3(13);
stak2.push("cola",2); // problem here
stak2.pop(2);
System.out.println(stak2.getSize());

}


}

最佳答案

您正在创建一个空的 ArrayList,然后尝试在 push 方法中从中获取第三个元素(索引为 2 的元素)。那是行不通的。

现在,您正在忽略构造函数中的 initSize 参数。你可能想要这样的东西:

// TODO: Rename the class to follow naming conventions
public klasa3(int initSize) {
for (int i = 0; i < initSize; i++) {
list.add(null);
}
}

或者提供一个默认元素:

// TODO: Rename the class to follow naming conventions
public klasa3(int initSize, E element) {
for (int i = 0; i < initSize; i++) {
list.add(element);
}
}

关于java - 通用数组索引越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30410792/

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