4

Javaで特定のファイルを読み込んで多次元配列にしようとしています。スクリプトからコード行を読み取るたびに、コンソールには次のように表示されます。

Caused by: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

コーディングが特定のインデックスに到達できないときにこのエラーが発生することはわかっていますが、現時点では修正方法がわかりません。

これが私のコーディングの例です。

int x = 1;
while (scanner.hasNextLine()) {
  String line = scanner.nextLine();
  //Explode string line
  String[] Guild = line.split("\\|");
  //Add that value to the guilds array
  for (int i = 0; i < Guild.length; i++) {
    ((ArrayList)guildsArray.get(x)).add(Guild[i]);
    if(sender.getName().equals(Guild[1])) {
      //The person is the owner of Guild[0]
      ownerOfGuild = Guild[0];
    }
  }
  x++;
}

**テキスト ドキュメント **

Test|baseman101|baseman101|0|
Test2|Player2|Player2|0|

ここにあるような他の解決策:Javaで上書きせずにテキストファイルに書き込む

前もって感謝します。

4

2 に答える 2

8

問題 1 ->int x = 1;
解決策: x は 0 で始まる必要があります

問題2->

((ArrayList)guildsArray.get(x)).add(Guild[i]);

あなたは増加 しているx のでif x >= guildsArray.size()、あなたは得るでしょうjava.lang.IndexOutOfBoundsException

解決

if( x >= guildsArray.size())
      guildsArray.add(new ArrayList());
for (int i = 0; i < Guild.length; i++) {
    ((ArrayList)guildsArray.get(x)).add(Guild[i]);
    if(sender.getName().equals(Guild[1])) {
      //The person is the owner of Guild[0]
      ownerOfGuild = Guild[0];
    }
  }
于 2013-10-19T04:12:40.013 に答える