Java 将N*N矩阵旋转9à;向右度到位

Java 将N*N矩阵旋转9à;向右度到位,java,matrix,2048,Java,Matrix,2048,我正在尝试用Java制作一个2048游戏机,我想实现板向右旋转90度,我在网上搜索并实现了一个功能,但它没有交换每一行和每一列,请有人回顾一下我写的,并帮助我找出代码中的实际错误 public static void rotation90Droite(int [][] vals) { int e = vals.length-1; int c = e / 2; for (int i = 0; i <= c ; i++) { for (int j =

我正在尝试用Java制作一个2048游戏机,我想实现板向右旋转90度,我在网上搜索并实现了一个功能,但它没有交换每一行和每一列,请有人回顾一下我写的,并帮助我找出代码中的实际错误

public static void rotation90Droite(int [][] vals) {

    int e = vals.length-1;
    int c = e / 2;
    for (int i = 0; i <= c ; i++) {
        for (int j = i; j <e - i; j++) {
            int t   = vals[i][j];


            vals[i][j] = vals[e - j][i];

            vals[e - j][i] = vals[e - i][e - j];

            vals[e - i][e - j] = vals[j][e - i];

            vals[j][e - j] = t;
        }
    }
}
public static void printMatrix(int[][] Matrix) {

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


public static void main(String[] args) {

    int[][] vals = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}} ;
    printMatrix(vals);
    System.out.println(" ");
    rotation90Droite(vals);
    printMatrix(vals);

    }
}

正如您可以看到的,最后一行已正确交换,但muchs值不在正确的位置,我找不到原因。任何帮助都将受到感谢,请提前

像这样的几何问题通常会有一个模式,说明如何访问数组元素。如果通读正在使用的索引,则循环中的最后一个赋值与模式不太匹配:

vals[j][e - j] = t;
应该是:

vals[j][e - i] = t;
这是一个例子



对于未来,将是解决这类问题的非常有价值的工具。

您想要旋转或转置吗?调试器可以非常有助于找出程序出错的地方。感谢您的回答,它解决了我的问题!不知道我怎么会错过that@EdoYouss如果一个帖子回答了你的问题,考虑一下。
vals[j][e - i] = t;