0
我已經從文本文件加載多次之前沒有硫問題,我已閱讀並重新讀我的代碼,我(個人)不能明白爲什麼我會得到這個問題,我完全失去了。ArrayIndexOutOfBounds通過文本文件循環
static public ArrayList<Media> importMedia(String fileName) throws IOException
{
try {
ArrayList<Media> mList = new ArrayList<>();
BufferedReader reader = new BufferedReader(new FileReader(fileName));
String line = reader.readLine();
int numberOfItems = Integer.valueOf(line);
while((line = reader.readLine()) != null)
{
String[] split = line.split(",");
if(split[0].contains("mp3"))
{
Mp3 mp3 = new Mp3(split[1]/*title*/,split[0]/*filename*/,Integer.parseInt(split[4])/*releaseyear*/,split[2]/*artist*/,split[3]/*album*/,split[5]/*label*/,Double.parseDouble(split[6])/*runtime*/);
mList.add(mp3);
}else if (split[0].contains("gif"))
{
Gif gif = new Gif(split[1]/*title*/,split[0]/*filename*/,Integer.parseInt(split[6])/*releaseyear*/,Double.parseDouble(split[2])/*width*/,Double.parseDouble(split[3])/*height*/,split[4]/*equipName*/,split[5]/*equipModel*/);
mList.add(gif);
}else if(split[0].contains("avi"))
{
String castNames = "";
boolean first = true;
for(int i = 7; i < 15; i++)
{
if(!(split[i].isEmpty()))
{
if(first)
{
castNames += split[i];
first = false;
}else{
castNames += "," + split[i];
}
}
}
Avi avi = new Avi(split[1]/*title*/,split[0]/*filename*/,Integer.parseInt(split[3])/*releaseyear*/,split[2]/*studio*/,split[5]/*director*/,castNames/*castnames*/,Double.parseDouble(split[4])/*runtime*/,Integer.parseInt(split[6])/*cast*/);
mList.add(avi);
}else{
}
}
return mList;
} catch (Exception ex) { System.out.println(ex.toString()); }
return null;
}
現在只獲得第3檔(控制檯圖所示)
我只是通過努力循環,我不知道爲什麼它會是出界了,我不能看到循環中的任何錯誤,或者爲什麼它給我一些但不是全部。
逃脫請修改代碼以打印整個堆棧跟蹤時,一個異常被捕獲。這將告訴你哪一行導致異常,你可以從那裏追蹤問題。如果不是,請更新問題以提供更多詳細信息。 –
你可以分享stacktrace哪裏確切它的投擲ArrayIndexOutOfBound異常 – Ranjeet
我添加了支票,我相信我發現了這個問題,謝謝你的幫助隊友 – Cacoon