1

我正在加载一个带有逗号分隔符的 .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

4 回答 4

7

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

一个很常见的Exception。这清楚地表明您正在尝试访问 的索引xx其中(例如)的大小也是。永远记住,如果大小是,您只能访问索引直到。如果您尝试访问大小也是 的索引,您一定会收到此错误。ArrayListxxxxxx-1xxxx

因此来自Internet的建议,要求您只遍历-1任何大小。

尽管您的FOR循环似乎没问题,但可能是您试图访问循环内的某个索引,该索引在某些时候1大于当前x值。

于 2013-03-04T15:37:52.883 回答
0

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

于 2013-03-04T15:56:15.917 回答
0

当您有一个嵌套的 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
     }
}
于 2017-02-24T18:09:26.387 回答
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());
}
于 2017-06-19T11:15:22.313 回答