多维数组

时间:2016-09-09 00:44:58

标签: java multidimensional-array

如何打印出列中的数组,从最后一列和最后一行开始,然后向后移动到第一列和第一行。我得到一个OutOfBoundsException。我相信问题在于我的内循环。

看起来应该是这样的                                                                             89,66,21,90,54, 等....

        {33, 92, 54},
        {22, 43, 90},
        {26, 85, 21},
        {75, 14, 66},
        { 8, 49, 89}

    };
    for(col=2; col<stuff.length; col++)
    {
        for(row=4; row<stuff.length; row--)
        {
            System.out.print(stuff[row][col] + ",");
        }
        System.out.println();
    }

3 个答案:

答案 0 :(得分:0)

我相信你可能有两个问题。第一个是你的第一个循环从2开始然后继续计数。这意味着它只会打印最后一行。我认为您需要将col++更改为col--,并将其从col<stuff.length更改为col>=0。第二个for需要从row<stuff.lengthrow>=0进行类似的更改。 IndexOutOfBounds将来自内部循环,进入无限循环倒计时,最终将导致它尝试以负值访问您的数组。

答案 1 :(得分:0)

1)你的循环从第2列开始并向上计数,这意味着只打印最后一列

2)一旦小于0,你需要将外循环计数器更改为停止,这样就不会产生无限循环

3)你需要为内循环做同样的事情并确保它计数到0并停止

应该这样做。

答案 2 :(得分:0)

假设东西是你的二维数组。 stuff.length将始终返回no行,否则返回no。您需要做的事情[0] .length

上述问题的解决方案如下:

    public static void main(String args[]){
        int A[][] = {{33,92,54},
               {22,43,90},
               {26,85,21},
               {75,14,66},
               {8,49,89}};
        int rowCount = A.length;
        int colCount = A[0].length;

        System.out.println("rows:"+rowCount);
        System.out.println("cols:"+colCount);
        for(int j= colCount-1; j>=0;j--){
            for (int i = rowCount-1;i>=0;i--){
                System.out.print(A[i][j] +",");
            }

        }

    }