class RotateMat {
static Integer[] swap(int x, int y) {
int a=x;
int b=y;
a=a^b;
b=a^b;
a=a^b;
return new Integer[]{a,b};
}
static int[][] rotate(int[][] arr) {
assert arr.length == arr[0].length;
int m = arr.length;
for (int i=0; i<m;i++) {
for (int k=0; k<m;k++) {
//int[] temp_arr = swap(arr[i][k], arr[k][i]);
//arr[i][k] = temp_arr[0];
//arr[k][i] = temp_arr[1];
int temp = arr[i][k];
arr[i][k] = arr[k][i];
arr[k][i] = temp;
}
}
print(arr);
return arr;
}
static void print(int[][] arr) {
int n=arr[0].length;
int m=arr.length;
assert m==n;
//System.out.println(m + " " + n);
for (int i=0; i<m;i++) {
for (int j=0; j<n; j++) {
System.out.print(arr[i][j]);
}
System.out.println();
}
}
public static void main(String[] args) {
int arr[][] = { {1,2,3}, {4,5,6}, {7,8,9}};
print(arr);
arr = rotate(arr);
print(arr);
}
}
我是一名 C 用户,正在尝试更多地练习 Java 编程。我理解 java 中的按值传递,这就是我尝试从 rotate() 函数返回旋转数组并将其再次分配给 arr 变量的原因。
即使在我旋转后,我也会打印相同的数组......我在这里做错了什么?