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

Silly mistake, change the condition in inner loop. row<x[row].length to column<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

改变-

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 循环中的 int 列不断增加,因为没有条件停止它。你得到一个 ArrayIndexOutOfBoundsException: 6 因为 x[0] 中没有第 7 个元素。(索引从 0 开始,元素从 1 开始)
解决方案是将你的第二个 for 循环更改为此

for (int column=0; column<x[row].length; column++)
于 2013-08-29T09:45:00.060 回答
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

请将您的代码更改为

 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 回答