2014-01-09 42 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"; 

這主要方法:

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的split方法不會返回一個包含null元素的數組。

從異常消息(ArrayIndexOutOfBounds 10)判斷,你的數組只有10個元素,但你試圖訪問索引10(記得數組索引從0到length -1)。您需要限制計數,使其不會遞增超過最後一個索引。

這將至少停止異常:

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

我假設他做了空檢查,因爲他認爲如果count高於csvData.length,數組將返回null,但是取而代之,他得到這個異常。 – kai

+0

@ kai是的,我剛纔想知道他們是否認爲這一點。 – Radiodef

相關問題