これは私のループ文です。最初のループは回転していないブロックを表示し、2番目のループは回転し、2次元配列をn(ユーザー入力)回表示します。私の問題は、2次元配列は一度回転しますが、3回目以降は回転しないことです。表示されるたびに2次元配列を時計回りに90度回転させたい。3x3 2d配列を時計回りにn回回転する方法
rot = x.nextInt(); //user input for n rotations
//initial block
System.out.println("1");
for(i=0; i<block.length; i++)
{
for(j=0; j<block[i].length; j++)
System.out.print(block[i][j]+"\t");
System.out.println();
}
//rotated block
for(cnt=2; cnt<=rot; cnt++)
{
System.out.println(cnt);
for(i=0; i<block.length; i++){
for(j=block.length-1; j>=0; j--){
newBlock[i][j] = block[j][i];
System.out.print(newBlock[i][j]+"\t");
}
System.out.println();
}
}
*オリジナル*ブロックを回転し続けます。以前の操作からブロックを回転する必要があります。 'newBlock'を' cnt'ループの最後に 'block'にコピーすることによって、 – Andreas
元の配列を回転させるだけです。 –
さらに、あなたのコードはローテーションではなく転置をしています。 –