私はJavaでコンソール2048ゲームを作ろうとしていますが、ボードの回転を右に90度回転したいと思います。 Webを実装して関数を実装しましたが、すべての行と列をスワップしていないので、誰かが私が書いた内容を見直して、コード内の実際のエラーを特定するのに役立ちます。N * N行列を右に9度回転する
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);
}
}
これは実際には最初の行は、最後の列になって確認する必要があり、最後の列は、など最後の行になる...私は実際に取得しています何
は次のとおりです。
1 2 3 4
5 6 7 8 // Starting matrix
9 10 11 12
13 14 15 16
13 9 5 1
14 3 6 8 // end matrix
15 11 2 12
16 12 8 4
として、あなたは正しくスワップされた最後の行を見ることができますが、多くの値が正しい場所にないので、私はなぜ見つけることができません。どんな助けもありがとうございます。事前にお礼を言います。
ローテーションやトランスポーズが必要ですか? –
デバッガは、プログラムがどこに間違っているかを見つけるのに非常に役立ちます。 – Henry