我有一个返回整数数组的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时,你能告诉我我的错误在哪里吗?
答案 0 :(得分:6)
你必须从索引0开始而不是1
dc = new DCDataObj(
intArray.get(0), // Datacenter 1000
intArray.get(1), // Zone 1100
答案 1 :(得分: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>
为参数,然后您只需调用
dc = new DCDataObj(intArray);
答案 2 :(得分:2)
另一种方法是使用这样的方法:
dc = new DCDataObj();
for (Integer k: intArray) {
dc.add(k);
}
然后你可以动态添加元素。
答案 3 :(得分:1)
您正在尝试获取仅包含40个元素的数组列表的第41个元素。
请记住,与数组(以及Java中的所有索引集合)一样,索引从0开始。
你应该从:
开始dc = new DCDataObj(
intArray.get(0), ... , intArray.get(39) ...