0

我有一个返回整数数组的 SQL 查询。

ArrayList<Integer> intArray = new ArrayList<>(44);

while (result.next()){
   intArray.add(result.getInt("CNT"));     // Insert the result into Java Array List
}

// Insert the result into Java Object
dc = new DCDataObj(
       intArray.get(1), //    Datacenter          1000
       intArray.get(2), //    Zone                1100
       ..................
     )

运行代码时出现此错误: java.lang.IndexOutOfBoundsException: Index: 40, Size: 40

当我使用 ArrayList 时,你能告诉我我的错误在哪里吗?

4

4 回答 4

6

你必须从索引 0 而不是 1 开始

dc = new DCDataObj(
intArray.get(0), //    Datacenter          1000
intArray.get(1), //    Zone                1100
于 2013-02-27T15:39:58.080 回答
4

代替

dc = new DCDataObj(
           intArray.get(1), //    Datacenter          1000
           intArray.get(2), //    Zone                1100
           ...

采用

dc = new DCDataObj(
           intArray.get(0), //    Datacenter          1000
           intArray.get(1), //    Zone                1100
           ...

因为List索引是从零开始的(就像数组和字符串一样)。


如果我是你,我可能会提供一个DCDataObj带有List<Integer>as 参数的构造函数,然后你可以简单地调用

dc = new DCDataObj(intArray);
于 2013-02-27T15:40:12.047 回答
2

另一种方法是使用这样的方法:

    dc = new DCDataObj();
    for (Integer k: intArray) {
        dc.add(k);
    }

然后您可以动态添加元素。

于 2013-02-27T17:21:57.343 回答
1

您试图获取只有 40 个元素的数组列表的第 41 个元素。

请记住,就像数组(以及 Java 中的所有索引集合)一样,索引从 0 开始。

你应该从:

dc = new DCDataObj(
    intArray.get(0), ... , intArray.get(39) ... 
于 2013-02-27T15:47:05.527 回答