在这段代码中,您可以将NxN矩阵旋转多次,并且可以选择方向1表示顺时针,-1表示相反方向。
在rotateMatrix方法中,您需要使用for-for循环来处理每个角落。
公共类JavaApplication144 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int matrix[][] = {{56, 12, 8, 90, 40}, {87, 76, 99, 1, 32}, {34, 43, 25, 78, 6}, {39, 555, 65, 88, 3}, {44, 75, 77, 14, 10}};
print();
}
这是方法:
static int[][] shiftingmatris(int[][] p_matris, int dırectıon) {
int[][] tempmatris = new int[p_matris.length][p_matris[0].length];
if (dırectıon == -1) {
for (int i = 0; i < p_matris.length; i++) {
for (int j = 0; j < p_matris[0].length; j++) {
if (i == 0 && j != p_matris[0].length - 1) {
tempmatris[i][j + 1] = p_matris[i][j];
} else if (i == p_matris.length - 1 && j != 0) {
tempmatris[i][j - 1] = p_matris[i][j];
}
}
}
for (int i = 0; i < p_matris.length; i++) {
for (int j = 0; j < p_matris[0].length; j++) {
if (j == 0 && i != 0) {
tempmatris[i - 1][j] = p_matris[i][j];
} else if (j == p_matris[1].length - 1 && i != p_matris.length - 1) {
tempmatris[i + 1][j] = p_matris[i][j];
}
}
}
} else if (dırectıon == 1) {
for (int i = 0; i < p_matris.length; i++) {
for (int j = 0; j < p_matris[1].length; j++) {
if (i == 0 && j != 0) {
tempmatris[i][j - 1] = p_matris[i][j];
} else if (i == p_matris.length - 1 && j != p_matris[0].length - 1) {
tempmatris[i][j + 1] = p_matris[i][j];
}
}
}
for (int i = 0; i < p_matris.length; i++) {
for (int j = 0; j < p_matris[0].length; j++) {
if (j == 0 && i != p_matris.length - 1) {
tempmatris[i + 1][j] = p_matris[i][j];
} else if (j == p_matris[0].length - 1 && i != 0) {
tempmatris[i - 1][j] = p_matris[i][j];
}
}
}
}
for (int i = 1; i < p_matris.length - 1; i++) {
for (int j = 1; j < p_matris[1].length - 1; j++) {
tempmatris[i][j] = p_matris[i][j];
}
}
return tempmatris;
}
}
你还需要打印矩阵。可以通过以下方法实现:
public static void print(){
Scanner s = new Scanner(System.in);
System.out.println("times of rotate: ");
int dondurme = s.nextInt();
System.out.println("direction?");
int dırectıon = s.nextInt();
int matrix[][] = {{56, 12, 8, 90, 40}, {87, 76, 99, 1, 32}, {34, 43, 25, 78, 6}, {39, 555, 65, 88, 3}, {44, 75, 77, 14, 10}};
System.out.println(" ");
for (int i = 0; i < matrix.length; i++) {
System.out.println(" ");
for (int j = 0; j < matrix.length; j++) {
System.out.print(" ");
System.out.print(matrix[i][j] + " ");
}
}
for (int i = 0; i < dondurme; i++) {
matrix = shiftingmatris(matrix, dırectıon);
}
System.out.println(" ");
for (int i = 0; i < matrix.length; i++) {
System.out.println(" ");
for (int j = 0; j < matrix.length; j++) {
System.out.print(" ");
System.out.print(matrix[i][j] + " ");
}
}
}