2014-01-09 4 views
-1

Это моя строка:Как выбросить ошибку ArrayIndexOutOfBoundsException?

 String csvFile = "Screenname,Firstname,Email,Timezone,Organization,Password,Lastname,Middlename,Gender,Birthdate\n" 
      + "Test01,Test01,[email protected],GMT+8,Khalibre,12345,test,test,M,3/8/1980\n" 
      + "Sok Dara,Dara,[email protected],GMT-7,Khalibre,12345,Sok,Dara,,1980-d1-25\n" 
      + "Test03,,[email protected],GMT+1,Khalibre,12345,test,test,M,2/2/1980\n" 
      + ",Test04,[email protected],GTM-8:00,Khalibre,12345,test,test,F,\n"; 

Этот метод Main:

boolean firstLine = true; 
    String[] readLineCSVs = csvFile.split("\n"); 
    for (String readLineCSV : readLineCSVs) { 
     rows++; 
     if (firstLine) { 
      firstLine = false; 
     } else { 
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
      Readdata rd = new Readdata(); 
      String[] csvData = readLineCSV.split(csvSplitBy); 
      int count =0; 
      while(csvData[count++]!=null){ 
       System.out.println(count); 
      } 
      System.out.println(csvData[0]); 
      System.out.println(csvData[1]); 
      System.out.println(csvData[2]); 
      System.out.println(csvData[3]); 
      System.out.println(csvData[4]); 
      System.out.println(csvData[5]); 
      System.out.println(csvData[6]); 
      System.out.println(csvData[7]); 
      System.out.println(csvData[8]); 
      System.out.println(csvData[9]); 
     } 

Шоу ошибка, как показано ниже:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10 
    at demo002.D2_F_003.readData(D2_F_003.java:38) 
    at demo002.D2_F_003.main(D2_F_003.java:247) 

Как бросить это исключение?

+0

'певд ArrayIndexOutOfBoundsException();' – kai

+0

если хотите бросить исключение, просто 'throw' это! – Rugal

+2

Я думаю, что каждый будет недопонимать ваш вопрос. вы хотите знать, как решить эту проблему, потому что вы получаете исключение, которое выбрасывается из вашей программы, правильно? – kai

ответ

0
boolean firstLine = true; 
String[] readLineCSVs = csvFile.split("\n"); 
for (String readLineCSV : readLineCSVs) { 
    rows++; 
    if (firstLine) { 
     firstLine = false; 
    } else { 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
     Readdata rd = new Readdata(); 
     String[] csvData = readLineCSV.split(csvSplitBy); 
     int count =0; 

     try{ 
     while(csvData[count++]!=null){ 
      System.out.println(count); 
     } 
     System.out.println(csvData[0]); 
     System.out.println(csvData[1]); 
     System.out.println(csvData[2]); 
     System.out.println(csvData[3]); 
     System.out.println(csvData[4]); 
     System.out.println(csvData[5]); 
     System.out.println(csvData[6]); 
     System.out.println(csvData[7]); 
     System.out.println(csvData[8]); 
     System.out.println(csvData[9]); 
     } 
     catch (ArrayIndexOutOfBoundsException e){ 
        e.printStackTrace(); 
      } 
    } 
0
try{ 
    //Your Code 
}catch(ArrayIndexOutOfBoundsException ex){ 
    //If error show 
} 
catch(Exception e){ 
} 
0

Если вы спрашиваете как исправить ошибку, это выглядит очень подозрительно:

int count =0; 
while(csvData[count++]!=null){ 
    System.out.println(count); 
} 

Я не уверен, что нулевая проверка должна быть для. Метод разделения String не возвращает массив с нулевыми элементами.

Судя по сообщению об исключении (ArrayIndexOutOfBounds 10), ваш массив имеет только 10 элементов, но вы пытаетесь получить доступ к индексу 10 (помните, что индексы массивов идут от 0 до длины - 1). Вам нужно ограничить счетчик, чтобы он не увеличивался за последний индекс.

Это, по крайней мере, остановить исключение:

int count = 0; 
while(count < csvData.length && csvData[count++] != null) { 
    System.out.println(count); 
} 
+0

Я предполагаю, что он делает нулевую проверку, потому что он считает, что если count выше, чем csvData.length, массив вернет null, но вместо этого он получит это исключение. – kai

+0

@kai Да, мне просто интересно, думали ли они об этом. – Radiodef

Смежные вопросы