1

修繕!みんな、ありがとう!

さて、なぜこれが私に ArrayIndexOutOfBoundsException を与えているのかわかりません..

al は、次のような値を保持する配列リストです。

2,6,m
1,7,w   
5,3,c   
0,4,w
1,6,w
2,3,w
1,5,w

ここで、各配列リストのインデックスを取得しようとしているところです。行、列、文字に分割します。temp[2] が範囲外であると言っています。なんで?つまり、分割メソッドは 0、1、および 2 の 3 つの部分を作成する必要があります。いくつかのテストを実行したところ、temp[0] および temp[1] 呼び出しの範囲外も出ました。

    for (int i = 0; i < al.size(); i++) {
        String[] temp = al.get(i).toString().split(",");
        System.out.println(temp.length);
        System.out.println(temp[1]);
        if (temp[2].equals("m")) {
            boardTiles[Integer.parseInt(temp[0])][Integer.parseInt(temp[1])].setIcon(mousetile);
            boardTiles[Integer.parseInt(temp[0])][Integer.parseInt(temp[1])].putClientProperty("mouse", true);
        }
        if (temp[2].equals("c")) {
            boardTiles[Integer.parseInt(temp[0])][Integer.parseInt(temp[1])].setIcon(cheesetile);
            boardTiles[Integer.parseInt(temp[0])][Integer.parseInt(temp[1])].putClientProperty("cheese", true);
        }
        if (temp[2].equals("w")) {
            boardTiles[Integer.parseInt(temp[0])][Integer.parseInt(temp[1])].setIcon(metalwall);
            boardTiles[Integer.parseInt(temp[0])][Integer.parseInt(temp[1])].putClientProperty("wall", true);
        }
    }

String[] を分割メソッドで間違って使用していますか? ありがとう - オースティン

編集:

arraylist で for ループを実行したところ、すべての値がそこにあります。

boardTiles[x][x] は、JButton の 2 次元配列です。

インデックス 1 で例外が発生しています。

表示されている .length も 1 です。

4

2 に答える 2

2

boardTilesおそらく、入力配列で定義されたいくつかの値のサイズがありません。

于 2012-04-13T15:52:41.537 に答える
0

al.get(i)を出力し、それが実際にコンマで区切られた値の文字列であることを再確認します。

于 2012-04-13T16:02:51.687 に答える