运行java二维数组的问题

时间:2014-12-18 17:06:13

标签: java arrays

我是java新手,现在我正在学习数组,

这是示例程序:

public class Array {
    public static void main(String[] args) {
        int[][] twodim = new int[][] { {1,2,4,4}, {2,4,5,5,4,3,3} };
        int d1 = twodim.length;
        int d2 = twodim[1].length;
        for (int i = 0; i < d1; i++){
            for (int j = 0;j < d2; j++){
        System.out.println(twodim[i][j]);
            }}
    }

}

我的输出:

4
4

这是不正确的,请指导我,提前致谢。

4 个答案:

答案 0 :(得分:0)

尝试这个配合,你的循环参数错误

基本上,它是一个二维数组。第一个循环检查外部数组长度,第二个循环检查每个单独数组的长度。

for (int i = 0; i < twodim.length; i++){
    for (int j = 0;j < twodim[i].length; j++){
        System.out.println(twodim[i][j]);
    }
}

答案 1 :(得分:0)

将第二个维度放入第一个循环:

    public static void main(String[] args)
    {
        int[][] twodim = new int[][] { { 1, 2, 4, 4 }, { 2, 4, 5, 5, 4, 3, 3 } };
        int d1 = twodim.length;
        for (int i = 0; i < d1; i++)
        {
            int d2 = twodim[i].length;
            for (int j = 0; j < d2; j++)
            {
                System.out.println(twodim[i][j]);
            }
        }
    }

答案 2 :(得分:0)

您提供的代码不会输出您所说的内容。它的输出是:

  

1
  2
  4
  4

然后它抛出异常:

  

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:4

以下是您的d1d2变量设置为:

int d1 = twodim.length;
// d1 = 2, the length of the outer array
int d2 = twodim[1].length;
// d2 = 7, the length of the second inner array, [2,4,5,5,4,3,3]

所以,外部循环将循环两次,这就是你想要的。

但是,内部循环将始终循环7次,因为这是d2等于的内容。这导致打印出第一个内部数组1,2,4和4中的每个数字,然后当它尝试访问第5个数字时,ArrayIndexOutOfBoundsException发生,因为没有第5个数字第一个内部阵列。

相反,您应该让第二个循环仅循环遍历每个数组的内容,如下所示:

for(int i = 0; i < twodim.length; i++) {
    for(int j = 0; j < twodim[i].length; j++) {
        // note that twodim[i].length is the length of the array that you are currently looping through
        System.out.println(twodim[i][j]);
    }
}

这个输出是:

  

1
  2
  4
  4
  2
  4
  5
  5
  4
  3
  3

答案 3 :(得分:-1)

当i = 0且j = 4时,您的代码会抛出IndexOutOfBoundsException

这是因为你的数组长度不一样。