public class Matrix {
static int ROW = 3;
static int COLUMN = 3;
int[][] A;
public Matrix() {
A = new int[ROW][COLUMN];
for (int i = 0;i < ROW;i++) {
for (int j = 0;j < COLUMN;j++) {
A[i][j] = i * 10 + j;
}
}
}
private void swapMatrix() {
for (int i = 0;i < ROW;i++) {
for (int j = 0;j < COLUMN;j++) {
int temp = A[i][j];
A[i][j] = A[j][i];
A[j][i] = temp;
}
}
}
private void showMatrix() {
for (int i = 0;i < ROW;i++) {
for (int j = 0;j < COLUMN;j++) {
System.out.println();
System.out.println("Element"+i+j+" is: "+A[i][j]);
System.out.println();
}
}
}
public static void main(String args[]) {
Matrix matrixObj = new Matrix();
System.out.println("Original Matrix:");
matrixObj.showMatrix();
matrixObj.swapMatrix();
System.out.println("Turned Matrix:");
matrixObj.showMatrix();
}
}
static int ROW = 3;
static int COLUMN = 3;
int[][] A;
public Matrix() {
A = new int[ROW][COLUMN];
for (int i = 0;i < ROW;i++) {
for (int j = 0;j < COLUMN;j++) {
A[i][j] = i * 10 + j;
}
}
}
private void swapMatrix() {
for (int i = 0;i < ROW;i++) {
for (int j = 0;j < COLUMN;j++) {
int temp = A[i][j];
A[i][j] = A[j][i];
A[j][i] = temp;
}
}
}
private void showMatrix() {
for (int i = 0;i < ROW;i++) {
for (int j = 0;j < COLUMN;j++) {
System.out.println();
System.out.println("Element"+i+j+" is: "+A[i][j]);
System.out.println();
}
}
}
public static void main(String args[]) {
Matrix matrixObj = new Matrix();
System.out.println("Original Matrix:");
matrixObj.showMatrix();
matrixObj.swapMatrix();
System.out.println("Turned Matrix:");
matrixObj.showMatrix();
}
}
我注意到row 和 COLUMN 会不相等,所以在代码里都设置为3。关键是不明白为什么用下面的代码不能实现转置:
private void swapMatrix() {
for (int i = 0;i < ROW;i++) {
for (int j = 0;j < COLUMN;j++) {
int temp = A[i][j];
A[i][j] = A[j][i];
A[j][i] = temp;
}
}
}
明明将A[i][j] 和A[j][i]交换了的,为什么用System.out.println("Element"+i+j+" is: "+A[i][j]);打印出来还是原来的顺序。始终想不通问题在哪里。
for (int i = 0;i < ROW;i++) {
for (int j = 0;j <=i;j++) {
int temp = A[i][j];
A[i][j] = A[j][i];
A[j][i] = temp;
}
}
}