我正在爲另一個程序編寫此類,並且當我拆分字符串時,我不斷收到數組超出範圍異常str。當我使用String.split時,我總是收到一個「ArrayIndexOutOfBounds」異常
static String[][] readFile(){
BufferedReader in;
count = 0;
String[][] ret = new String[20][2];
try
{
in = new BufferedReader(new FileReader(CFGfolder+"\\input.ini"));
String str;
while((str=in.readLine()) != null){
if(str!="[GameEvents]"){
ret[count][0]=str.split("=")[0];
ret[count][1]=str.split("=")[1];
count++;
}
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return ret;
}
這是它正在閱讀的文件的格式。
evtCastSpell1=[q]
evtCastSpell2=[w]
evtCastSpell3=[e]
evtCastSpell4=[r]
我想看到的是什麼STR串真的是(意思是,打印不分裂),它表明它已正確讀取該文件,並把它在數組中。當我嘗試閱讀拆分字符串的[1]時,問題就出現了。該[0]是好的,它正確打印
evtCastSpell1
evtCastSpell2
evtCastSpell3
evtCastSpell4
我真的不知道爲什麼它不讀[1]一部分。通常這種錯誤來自正則表達式,它是否理解第二部分中的[]作爲正則表達式?如果是的話,我會怎麼解決?我試過四處尋找,但所有我能找到的是由於正則表達式而發生的類似錯誤。這是一樣的嗎?
謝謝你的幫助。
不是你問什麼,而是你應該使用'新FileReader(新文件(CFGfolder,「input.ini」))''以避免平臺特定的編碼。 – MeBigFatGuy
你也可以'ret [count] = str.split(「=」);'以避免分裂兩次。 – MeBigFatGuy
雖然在sudmong的答案中給出了例外的原因和正確的代碼,但您的代碼也可能有其他問題。如果count超過數組大小20,那麼也會有一個arrayindexoutofboundexception。 – 2011-09-22 06:09:42