我正在使用逗号分隔符加载.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++)
有什么想法吗?谢谢:)
答案 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
}
}