java代码实现上面的题
时间: 2024-09-21 14:03:35 浏览: 11
为了帮助你在Java中实现上述二维矩阵的顺时针、逆时针和180度旋转,我们可以创建一个简单的类来处理这个问题。这里提供一个基础的示例代码:
```java
public class MatrixRotation {
public static void main(String[] args) {
int[][] matrix = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
int n = matrix.length;
int angle = getAngleFromInput(args); // 假设getAngleFromInput函数用于获取输入角度
switch (angle) {
case 90:
rotateMatrix90(matrix, n);
break;
case 180:
rotateMatrix180(matrix, n);
break;
case -90:
rotateMatrix90(matrix, n, true); // 第二个参数表示逆时针
break;
default:
System.out.println("Invalid angle");
return;
}
printRotatedMatrix(matrix);
}
private static void rotateMatrix90(int[][] matrix, int n, boolean isClockwise) {
for (int i = 0; i < n / 2; i++) {
for (int j = i; j < n - i - 1; j++) {
int temp = matrix[i][j];
if (!isClockwise)
temp = matrix[n - 1 - j][i]; // 逆时针旋转
matrix[i][j] = matrix[n - 1 - j][n - 1 - i];
matrix[n - 1 - j][n - 1 - i] = matrix[j][n - 1 - j];
matrix[i][n - 1 - j] = temp;
}
}
}
private static void rotateMatrix180(int[][] matrix, int n) {
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[n - 1 - j][n - 1 - i];
matrix[n - 1 - j][n - 1 - i] = temp;
}
}
}
private static void printRotatedMatrix(int[][] matrix) {
for (int[] row : matrix) {
for (int num : row) {
System.out.print(num + " ");
}
System.out.println();
}
}
}
```
这个代码首先读取矩阵和旋转角度,然后根据角度调用相应的旋转函数。`rotateMatrix90` 和 `rotateMatrix180` 函数分别实现了顺时针和180度旋转,它们通过交换矩阵元素的位置来达到旋转的效果。最后,`printRotatedMatrix` 函数打印出旋转后的矩阵。
注意,这个例子假设了输入角度是从命令行参数获取的,实际应用中你可能需要从文件或其他来源读取。此外,`getAngleFromInput` 和错误处理部分在这里省略了,你需要根据实际情况补充这部分代码。