Java 将N*N矩阵旋转9à;向右度到位
我正在尝试用Java制作一个2048游戏机,我想实现板向右旋转90度,我在网上搜索并实现了一个功能,但它没有交换每一行和每一列,请有人回顾一下我写的,并帮助我找出代码中的实际错误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 =
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;