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

java.lang.ArrayIndexOutOfBoundsException:90-旋转n*m数组,java,arrays,error-handling,Java,Arrays,Error Handling,我昨天问了一个用n*m旋转二维阵列的解决方案。 我得到这个链接作为答案: 我尽了最大努力,我认为它很好用。是的,它适用于n*n数组,但是如果n和m不同,我会得到一个IndexOutOfBounds错误,我不知道为什么 这是我的密码: public void rot90DegRight(){ //get Matrix this.Matrix = getMatrix(); int rows = Matrix.length; int cols = Matri

我昨天问了一个用n*m旋转二维阵列的解决方案。 我得到这个链接作为答案:

我尽了最大努力,我认为它很好用。是的,它适用于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;           
}
public void rot90DegRight(){
//获取矩阵
this.Matrix=getMatrix();
int行=矩阵长度;
int cols=矩阵[0]。长度;
//创建当前矩阵的镜像
RGBColor[]mirror=getMatrix();
//创建一个新的矩阵
对于(int i=0;i

非常感谢你的帮助

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

因为,旋转二维数组时,行变为列,列变为行。只有当n==m时,才能在同一矩阵中旋转。
如果n=那么你需要声明一个新的二维数组。

好吧,你链接到的问题清楚地说明了解决方案是多维数组,即固定的行和列。它们不可能是交错的。好吧,您链接到的问题清楚地说明了解决方案是多维数组,即固定的行和列。它们不能参差不齐。