1

YouTube で Bucky のチュートリアル シリーズをフォローしていますが、この特定のチュートリアルを機能させるのにいくつか問題があります... ( http://www.youtube.com/watch?v=hbot9MQVHOM 参照用)

package learning;

public class MDArrays {
    public static void main (String[] args){

        int firstArray[][]={{2,3,4,5,6,7},{1,2,3,4,5,6,7}};
        int secondArray[][]={{4,6,2,3},{2,5,1,6,7},{4,3}};

        System.out.println("Array #1");

        display(firstArray);

        System.out.println("Array #2");
        display(secondArray);

    }

    public static void display(int x[][]){

        for (int row=0; row<x.length; row++){
            for (int column=0; row<x[row].length; column++){

                System.out.print(x[row][column] + "\t");

            }
            System.out.println();
        }

    }
}

私が得ているエラーは次のようになります

Array #1
2       3       4       5       6       7       Exception in thread "main"
java.lang.ArrayIndexOutOfBoundsException: 6
    at learning.MDArrays.display(MDArrays.java:23)
    at learning.MDArrays.main(MDArrays.java:11)

誰かがこれで私を助けることができれば、私は非常に感謝しています:)

4

5 に答える 5

2

ばかげた間違い、内部ループの条件を変更してください。row<x[row].lengthcolumn<x[row].length

...
for (int column=0; column<x[row].length; column++){
    System.out.print(x[row][column] + "\t");
}
于 2013-08-29T09:22:27.887 に答える
1

コードを次のように変更してください

 public static void display(int x[][]){

for (int row=0; row<x.length; row++){
    for (int column=0; column<x[row].length; column++){  // you made a mistake here            

        System.out.print(x[row][column] + "\t");

    }
    System.out.println();
   }

 }
于 2013-08-29T09:24:49.583 に答える
1

変化する-

for (int column = 0; row < x[row].length; column++)

に-

for (int column = 0; column < x[row].length; column++)

ArrayIndexOutOfBoundsExceptionがスローされる理由-

配列が不正なインデックスでアクセスされたことを示すためにスローされます。インデックスが負であるか、配列のサイズ以上です。

于 2013-08-29T09:27:34.617 に答える
1

それはかなり単純な間違いです。

内部 for ループの条件を変更するのを忘れただけです。

それ以外の

for (int column=0; row<x[row].length; column++)

使用する

for (int column=0; column<x[row].length; column++)
于 2013-08-29T09:56:29.000 に答える
1

元のコードでは、停止する条件がないため、2 番目の for ループの int 列が増え続けています。x[0] に 7 番目の要素がないため、ArrayIndexOutOfBoundsException: 6 が発生します。(インデックスは 0 から始まり、要素は 1 から始まります)
解決策は、2 番目の for ループをこれに変更することです

for (int column=0; column<x[row].length; column++)
于 2013-08-29T09:45:00.060 に答える