2016-05-17 57 views
-1

編輯:對不起,我是個白癡。我沒有意識到我的循環對於我的測試文檔數據來說太長了,最終產品將是150行,但我的只有9行,導致錯誤。對不起,浪費時間,並感謝您的幫助文件讀取器發現異常

因此,我需要編寫一個程序,從文件中讀取數據,數據分隔「,」我使用拆分命令存儲在陣列。每個第三個結果都是一個整數,需要像這樣解析,但是後來我遇到了一個異常。我的代碼具體..

try { 
BufferedReader read = new BufferedReader(new FileReader("temp.txt")); 
    String file = read.readLine(); 
    String[] store=file.split(","); 

    for (int i=2; i<150; i=i+3){    
     int result=Integer.parseInt(store[i]); 
      if (result>highresult){ 
       highresult = result; 
       fName = store[i - 1]; 
       sName = store[i - 2];   
     } 
} 
    read.close(); 

} catch (IOException e) { 
    System.out.println("File Read Error"); 
} 

例外是: 異常在線程 「主」 java.lang.ArrayIndexOutOfBoundsException:11 在testing.Testing.main(Testing.java:28) Java結果:1

我的for循環內的解析器遇到異常,我不能爲我的生活找到問題。一直盯着它,我想我看到了雙倍。任何想法怎麼了?

添加了清晰 - 測試文件本身包含以下數據

名1,Sname1,50,NAME2 Sname2,75,NAME3,Sname3,100

測試它與系統輸出消息顯示它收集來自陣列的數據正確,問題似乎是在[2] [5] [8](在這種情況下爲50,75,100)的數組中更改每個第三部分數據時的問題爲一個整數。

感謝您的耐心配合,這個網站仍然是新手。

+0

sysout解析前存儲[i]以確保您有整數(對於調試purpouse - 也許您的文件沒有正確的格式(數字是用逗號作爲分隔符的小數?) – Nadir

+0

我在解析器之前添加了一個sysout,並用計數器對它進行了測試,它在數組中指定的位置正確讀取數據。我創建的測試文件具有foll ow – Daggar

+0

對不起,繼續從前 - 有以下... Name1,Sname1,50,Name2,Sname3,75,Name3,Sname3,100 – Daggar

回答

0

好,我可以看到兩個問題:要麼店[i]是不是一個int,無論你想在解析之前得到的值了數組的邊界

剛剛打印出來的我和一起來看看在它的值,如果它是< 150看看其文件中的值

+0

按照要求完成,並且兩個值都正確輸出,[I]以3爲間隔出現,如預期的那樣開始2,並且從文件打印出的值也正確輸出。它只是不喜歡解析字符串中的整數。 – Daggar

+0

但是打印出來的最後一個「我」是什麼?因爲ArrayIndexOutOfBoundsException出現在這樣的情況:如果你的數組有150個元素,你不能得到第151或第152個元素,因爲它不存在;當我讀你的代碼時,它會試圖從數組中獲得第151或第152個元素 – Arctigor