[英]Java BufferedReader while loop out of bounds exception
我正在使用BufferedReader從文本文件讀取數據。 變量“ reg”是我要訪問的數據字符串中的第四個條目。
我收到異常:“線程“主”中的異常java.lang.ArrayIndexOutOfBoundsException:3”
這是我的代碼:
package calctest;
import static calctest.CalcTest.reg;
import java.io.*;
public class CalcTest {
static Integer reg, prov;
public static void main(String[] args) throws Exception{
String readFile = "M:\\MandNDrives\\mwallace\\JAVA for NEMS\\EORModule\\NEMSEORDB.txt";
BufferedReader br = null;
String line = "";
String delim = "[ ]+";
try {
br = new BufferedReader(new FileReader(readFile));
br.readLine();
while ((line = br.readLine()) != null) {
String [] reservoir = line.split(delim);
reg = Integer.parseInt(reservoir[3]);
System.out.println(reg);
}
}catch (FileNotFoundException e) {
}catch (IOException e) {
}
}
}
您的錯誤與閱讀無關。 錯誤是儲液池(有時)的長度小於4。
while ((line = br.readLine()) != null) {
String [] reservoir = line.split(delim);
for(String s : reservoir)
System.out.println(s); //Post what this outputs for debugging purposes
if (resivoir.length > 3)
reg = Integer.parseInt(reservoir[3]);
else
reg = ... //do something else...
System.out.println(reg);
}
異常是ArrayIndexOutOfBoundsException.Oracle文檔說:
拋出該錯誤指示數組已使用非法索引訪問。 索引為負或大於或等於數組的大小。
錯誤-> java.lang.ArrayIndexOutOfBoundsException:3表示您正在嘗試訪問索引3。
正在訪問索引3的行是
reg = Integer.parseInt(reservoir[3]);
請檢查如下
if (resivoir.length > 3)
reg = Integer.parseInt(reservoir[3]);
else
//there must be some error or do something else
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.