を使用するときに「にArrayIndexOutOfBounds」例外を取得しておきます。私は別のプログラムのために、このクラスを書いていますし、私は、文字列strの<strong></strong>を分割していたときに境界例外のうちの配列を取得しておくのstring.Split
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]部分を読んでされていない理由はわかりません。通常、この種のエラーは正規表現から来ています。それは正規表現として第2部分の[]を理解していますか?もしそうなら、どうすれば回避できますか?私は周りを見てみましたが、私が見つけることができるのは、正規表現のために起こる同様のエラーです。これは同じですか?
ありがとうございました。
あなたが尋ねたものではありませんが、新しいFileReader(新しいファイル(CFGfolder、 "input.ini"))を使用してプラットフォーム固有のコーディングを避けるべきです。 – MeBigFatGuy
あなたはsplitを2回実行するのを避けるために、おそらく 'ret [count] = str.split(" = ");'を実行することもできます。 – MeBigFatGuy
例外の理由と正しいコードがsudmongの答えで与えられている間、あなたのコードには他の問題もあるかもしれません。 countが配列の大きさ20を超えている場合は、配列発見のための配列発見もあります。 –