gpt4 book ai didi

java - 二维 ArrayList 错误

转载 作者:行者123 更新时间:2023-11-29 05:28:13 24 4
gpt4 key购买 nike

我在这里试图从我的二维 ArrayList 中获取一个元素,但出现了 IndexOutOfBoundException 错误。我在这里做错了什么?我是否需要先像在简单数组中那样分配空间?如果是这样,我怎样才能在二维数组中做到这一点?下面是代码,

import java.util.ArrayList;

public class Test {
private ArrayList<ArrayList<String>> array;

public Test(){
array = new ArrayList<ArrayList<String>>();
array.get(0).set(0, "00");
array.get(0).set(1, "01");
array.get(0).set(2, "02");
array.get(1).set(0, "10");
array.get(1).set(1, "11");
array.get(1).set(2, "12");
array.get(2).set(0, "20");
array.get(2).set(1, "21");
array.get(2).set(2, "22");
}

public String getE(int a, int b){
return array.get(a).get(b);
}

public static void main(String[] args) {
Test object = new Test();
System.out.println(object.getE(0, 0)); // This gives me the error.
}
}

最佳答案

您需要初始化 ArrayList在你插入它们之前。像这样:

public Test(){
array = new ArrayList<ArrayList<String>>();
array.add(new ArrayList<String>());
array.add(new ArrayList<String>());
array.add(new ArrayList<String>());
array.get(0).add("00");
array.get(0).add("01");
array.get(0).add("02");
array.get(1).add("10");
array.get(1).add("11");
array.get(1).add("12");
array.get(2).add("20");
array.get(2).add("21");
array.get(2).add("22");
}

现在,array是空的,所以调用array.get(0)将导致 IndexOutOfBoundException .一旦你添加了一个初始化的 ArrayList在索引 0 处,您将不会再收到该错误。

构造函数ArrayList<ArrayList<String>>()使空 ArrayList<ArrayList<String>> .它不初始化 array 的内容;你需要自己做。

此外,使用 set(int i , E e)如果索引 i 处还没有元素,则会给您带来同样的问题。你应该使用 add(E e)反而。您可以阅读更多关于 set() 的信息在 http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#set(int , E).

关于java - 二维 ArrayList 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21975006/

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