我知道有一些关于这个特定错误的帖子,但这些帖子的答案似乎都没有解决我的问题。基本上我正在将一个txt文件读入arraylist listS。它编译没有错误,但是当我运行它时,我得到" ArrayIndexOutOfBoundsException:2"。显然问题在第359行,即" double tempArea = Double.parseDouble(tokenize [2]);"。我看不出该行有什么问题,所以我也检查了额外的大括号或分号,但没有找到。我在下面提供了我的代码。任何人都可以看到错误的原因是什么?
ArrayList<String>listS = new ArrayList<>();
try
{
BufferedReader bR = new BufferedReader (new FileReader("EssentialsSaleFile.txt"));
String fileRead = bR.readLine();
while(fileRead != null)
{
String[] tokenize = fileRead.split(",");
String tempType = tokenize[0];
String tempAddress = tokenize[1];
double tempArea = Double.parseDouble(tokenize[2]);
int tempNumOfBedrooms = Integer.parseInt(tokenize[3]);
int tempNumOfToilets = Integer.parseInt(tokenize[4]);
int tempNumOfGarages = Integer.parseInt(tokenize[5]);
String tempSellerName = tokenize[6];
String tempSellerPhone = tokenize[7];
String tempSaleOfferDate = tokenize[8];
String tempSaleOfferEndDate = tokenize[9];
double tempAskingAmount = Double.parseDouble(tokenize[10]);
String tempAssignedEmployee = tokenize[11];
double tempSalesCommissionPerc = Double.parseDouble(tokenize[12]);
String tempObj = new String();
listS.add(tempObj);
fileRead = bR.readLine();
}
bR.close();
}
catch(FileNotFoundException ex)
{
JOptionPane.showMessageDialog(null,"File not here.");
}
catch (IOException e)
{
}
答案 0 :(得分:1)
问题不在于代码本身。
tokensize
数组包含的元素与您行中的逗号分隔字符串一样多。
由于访问第3个元素(ArrayIndexOutOfBoundsException
)时出现tokenize[2]
,因此文件中只有一个逗号。
例如:
第foo,bar
行为您提供了只有两个元素的数组["foo","bar"]
。访问tokenize[2]
会产生ArrayIndexOutOfBoundsException
。
答案 1 :(得分:0)
答案很简单。文件中有一行只包含一个逗号。用逗号分割这一行返回一个只有两个元素的数组,这使得访问tokenize [2]超出界限。
首先,您应该检查被检查的行包含的内容。 之后,如果tokenize的长度为13,则在拆分后添加一个检查,如果没有,则跳过该行或其他一些适当的操作,如显示消息或记录该行。