2015-12-10 94 views
-2

for循環將data.txt中的數據分配給字符串fileData並自行正常工作。當我嘗試解析字符串時,出現「字符串索引超出範圍」錯誤。有沒有辦法來解決這個問題? Data.txt文件的格式爲這樣:Java:無法解析for循環中的字符串

Mike 
2 
50 
50 
Patrick 
1 
220 
Patrick 
3 
20 
30 
30 

這是我的代碼:

Scanner inFile = new Scanner(new FileReader("data.txt")); 
int y; 
int x; 
for (y = 1; y <= 3; y++)  
    for (x = 1; x <=4; x++) { 
     String fileData = inFile.next(); 
     System.out.print(fileData); 
     int mData = Integer.parseInt(fileData.substring(4, 9)); 
    } 
} 
+0

檢查FILEDATA纔去的子 – Stultuske

+0

我已經有長度,它是作爲exepexted,問題是當我將代碼行添加到子字符串中時 –

+1

*「我已經擁有了,它的執行過程是這樣的」*因此,您真的希望在「Mike」字符串的第九個位置有一個字符,它只有4個字符長? – Tom

回答

0

你的問題是:

fileData.substring(4, 9) 

將子doc

拋出:IndexOutOfBoundsException - 如果beginInde x是負數, endIndex大於此String對象的長度或 beginIndex大於endIndex。

你不檢查您輸入的大小,以及你的文件中包含的話小則9,因此例外

+0

@ O.Potts - 這很容易檢查,只需將您的代碼更改爲'fileData.substring(0,1)'並查看會發生什麼。我的猜測是它會起作用 –