java.lang.IndexOutOfBoundsException:Index:xx,Size:xx

时间:2013-03-04 15:30:37

标签: java

我正在使用逗号分隔符加载.csv文件,使用jdom解析器拆分数据并插入数据库。

但不知怎的,我已经提到了这个错误。 .csv文件包含超过200k的记录。

当它读到大约4000条记录时,程序就抛出了这个错误。 index和size是相同的值,但在此之前,所有记录都可以成功插入。只是想知道它为什么直到差不多4k才发现这个错误。

这是我的for循环:

for(int x = 0; x < FLODS.getBufferSize(); x++)

但我在互联网上搜索过:他们认为这种方法很有用。

for(int x = 0; x < FLODS.getBufferSize()-1; x++)

有什么想法吗?谢谢:)

4 个答案:

答案 0 :(得分:6)

java.lang.IndexOutOfBoundsException: Index: xx, Size: xx

非常常见Exception。这清楚地表明您尝试访问xx索引,其中ArrayList大小(例如)也是{ {1}}。永远记住,如果大小为xx,则只能访问索引xx。如果您尝试访问大小也为xx-1的{​​{1}}索引,则必然会出现此错误。

因此来自互联网的建议,要求您只遍历任何大小的xx

虽然您的xx循环似乎没问题,但您可能正在尝试访问循环内的某个索引,该索引在某个时刻比-1值更多FOR

答案 1 :(得分:0)

java.lang.IndexOutOfBoundsException是一种异常类型,当某种类型的索引(例如数组,字符串或向量)超出范围时出现,因此请检查分配的内存。 所有人都可以说,无需在for循环之前和之内查看代码

答案 2 :(得分:0)

List<WebElement> div1=driver.findElements(By.xpath(".//*[@class='art_title']"));        

for(int i=0;i<=div1.size();i++)
{           
    System.out.println(div1.get(i).getText());          
    Thread.sleep(1000);
}

我将其改为以下格式,而不是上述格式:

List<WebElement> div1=driver.findElements(By.xpath(".//*[@class='art_title']"));
String[] abc = new String[div1.size()];

int i= 0;

for (WebElement e : div1) 
{
        abc[i] = e.getText();
        i++;            
        System.out.println(e.getText());
}

答案 3 :(得分:-1)

当你有一个嵌套的For循环并尝试访问第二个变量时,这是一个错误。

for(int i = 0;i<something.size(); i++) {
     //Some manipulations here..
     for(int j = 0;j<somethingElse.size(); j++) {
          //using blah(i) instead of blah(j) causes this issue
     }
}