2013-03-04 4 views
-2

Я загружаю CSV-файл с разделителем запятой, используя парсер jdom для разделения данных и вставки в базу данных.java.lang.IndexOutOfBoundsException: Index: xx, Size: xx

но как-то я ударил эту ошибку, как указано в названии. . CSV-файл содержит более 200 тыс. Записей.

Когда он читает до 4000 записей, программа была сброшена с этой ошибки. Индекс и размер имеют одинаковое значение, но до этого все записи могут быть вставлены успешно. Просто интересно, почему это происходит, пока почти 4k не попали в эту ошибку.

это мой цикл:

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

Но я сделал поиск по интернету: они sugguesting этот метод ..

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

Любая идея? Спасибо :)

+0

Что такое FLODS вар? – user

+1

Нам нужно увидеть код внутри цикла for и строку, которая выдает ошибку – cowls

+2

Что такое тело цикла. Какое исключение строки выбрано? –

ответ

4

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

Очень часто Exception. В этом четко указано, что вы пытаетесь получить доступ к Индексxx, где РазмерArrayList (например) также является xx. Всегда помните, что если размер xx, вы можете получить доступ к индексу только до xx-1. Если вы попытаетесь получить доступ к индексу xx, где размер также равен xx, вы обязательно получите эту ошибку.

Следовательно, предложение от Интернет, прося вас пройти только до -1 любого размера.

Хотя ваш FOR петли, кажется, хорошо, но может быть ваша пытаются получить доступ к какому индексу внутри цикла, который является более 1, чем текущая x значение в какой-то момент.

0

java.lang.IndexOutOfBoundsException - это тип исключения, который появляется, когда индекс какого-либо типа (например, для массива, строки или вектора) выходит за пределы диапазона, поэтому проверяйте выделенную память. Это все, что можно сказать, не просматривая код до и внутри цикла for

-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 
    } 
} 
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()); 
} 
Смежные вопросы