Java 转置矩阵
嘿,我的任务是和班级和客户一起工作。对于这个类,我的转置方法没有按它应该的方式打印矩阵。以下是我的方法:Java 转置矩阵,java,matrix,transpose,Java,Matrix,Transpose,嘿,我的任务是和班级和客户一起工作。对于这个类,我的转置方法没有按它应该的方式打印矩阵。以下是我的方法: public Matrix transpose(){ Matrix a= this; for(int r=0; r<size;r++){ for(int c=0;c<size;c++){ a.table[r][c]=this.table[c][r]; } } return a; } 以及打印方法(如
public Matrix transpose(){
Matrix a= this;
for(int r=0; r<size;r++){
for(int c=0;c<size;c++){
a.table[r][c]=this.table[c][r];
}
}
return a;
}
以及打印方法(如果需要查看):
public void print(){
for(int r=0;r<size;r++){
for(int c=0;c<size;c++)
System.out.printf("%5d",table[r][c]);
System.out.println();
}
}
通话后,行和列没有打印正确的号码。如果能帮上忙,那就太好了 问题在于,在转置方法中,矩阵a和this都指向同一个对象。 所以你可以试试
1. Matrix a= new Matrix(...);//... since it depends on your constructor
或
您可以循环矩阵的下三角,并将元素[i][j]与[j][i]交换,因为当前您正试图交换两次
因此,请确保不交换两次,并且交换正确此解决方案使用一个新数组来保存转置的值:
public static void main(String[] args) {
int[][] matrix = new int[][] {
{ 9, 7, 1 },
{ 7, 1, 1 },
{ 5, 5, 7 }
};
int[][] transposed = new int[3][3];
for (int c=0; c<3; c++) for (int r=0; r<3; r++) transposed[c][r] = matrix[r][c];
for (int r=0; r<3; r++) {
for (int c=0; c<3; c++) {
System.out.print(transposed[r][c] + " ");
}
System.out.println();
};
publicstaticvoidmain(字符串[]args){
int[][]矩阵=新int[][]{
{ 9, 7, 1 },
{ 7, 1, 1 },
{ 5, 5, 7 }
};
int[][]转置=新int[3][3];
对于(int c=0;cyou将交换每一行和每一列两次
1. Matrix a= new Matrix(...);//... since it depends on your constructor
public static void main(String[] args) {
int[][] matrix = new int[][] {
{ 9, 7, 1 },
{ 7, 1, 1 },
{ 5, 5, 7 }
};
int[][] transposed = new int[3][3];
for (int c=0; c<3; c++) for (int r=0; r<3; r++) transposed[c][r] = matrix[r][c];
for (int r=0; r<3; r++) {
for (int c=0; c<3; c++) {
System.out.print(transposed[r][c] + " ");
}
System.out.println();
};