2013-09-26 60 views
-1

我似乎無法弄清楚是什麼導致此錯誤「線程中的異常」main「java.lang.ArrayIndexOutOfBoundsException:1 at Bank.main(Bank.java:42)< ---這一行是指啓動的代碼行「banklist.add(新銀行(值[0] ....」關於'ArrayIndexOutOfBoundsException'等錯誤?

public static void main (String[] args) throws FileNotFoundException 
    { 
     FileReader fr = new FileReader("Bank Data.txt"); 
     BufferedReader reader = new BufferedReader(fr); 
     List<Bank> banklist = new ArrayList<Bank>(); 
     try { 
     String line; 
     while ((line = reader.readLine()) != null) 
      { 
      String[] values = line.split("/t"); // Split on "tab" 

      banklist.add(new Bank(values[0], Integer.parseInt(values[1]),Integer.parseInt(values[2]),Integer.parseInt(values[3]),Integer.parseInt(values[4]), values[5])); // Create a new Player object with the values extract and add it to the list 
+0

最後一行輸入是否可能是「」?即文件末尾有\ \ \ \ \ \ \ \ –

+1

你有沒有考慮將megaline拆分爲臨時的單獨分配,以便您可以調試? –

回答

0

您已經分手的/t而非\t。請注意反斜槓而不是正斜槓。

由於您的行可能不包含任何/t序列,因此您無法獲得您的代碼所需的所有單詞。

+0

有效的點和修復這個錯誤後,它仍然給我的錯誤。 – user2817778

+0

然後你應該可以看到Akhilesh的回答。檢查正確分裂的結果,看看它們與你期望它們的外觀有什麼不同。顯然,你的言辭比你期望的要少,但是如果不知道輸入的內容,就不能知道其原因。 – Dolda2000

+0

檢出TXT文件後,我注意到TABS未正確放置.i.e列中有多個選項卡。解決這個問題後,代碼的作品。謝謝大家的幫助。 – user2817778

1

最有可能的解釋是,在你的文件,還有一些沒有標籤。也許最後一行行是空的

可能的解決方案可能是做一個防禦性編程並檢查數組的長度,然後將其直接索引爲數組[1]。

0

您已使用錯誤的表情。

查找以下解決方案..

 while ((line = reader.readLine()) != null) { 

      String regexp = "[\\s,;\\t]+"; 
      String[] values = line.split(regexp); 

      banklist.add(new Bank(values[0], 
        Integer.parseInt(values[1]), 
        values[2], 
        values[3], 
        Integer.parseInt(values[4]), 
        values[5]) 
      ); 



     } 
相關問題