java.lang.ArrayIndexOutOfBoundsException:90 - 旋转n * m数组

时间:2017-05-15 18:04:02

标签: java arrays error-handling

我昨天问了一个用n * m旋转2d阵列的解决方案。 我将此链接作为答案:How do you rotate a two dimensional array?

我尽我所能,我认为它运作良好。是的,它适用于n * n数组,但如果n和m不同,我得到一个IndexOutOfBounds错误,我不知道为什么。

这是我的代码:

    public void rot90DegRight(){
    //get Matrix 
    this.Matrix = getMatrix();

    int rows = Matrix.length;
    int cols = Matrix[0].length;

    // create a mirror of current matrix
    RGBColor[][] mirror = getMatrix();
    // create a new matrix

    for (int i = 0; i < rows; i++){
        for (int j = 0; j < cols; j++){
            Matrix[j][rows - i - 1] = mirror[i][j];
        }
    }

    // replace cols count with rows count
    int tmp = rows;
    rows = cols;
    cols = tmp;           
}

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

因为,当您旋转2d数组时,行变为列,列成为行。只有当n == m时,才能在同一矩阵中旋转。 如果n!= m则需要声明一个新的2d数组。