如何用java编写一个矩阵的转置?

Python011

如何用java编写一个矩阵的转置?,第1张

int a[][] = {{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4},{1,2,3,4}}

        int b[][] = new int [4][7]

        for (int i = 0i <4i++) {

            for (int j = 0j <7j++) {

                b[i][j] = a[j][i]

            }

        }

        System.out.println("矩阵a:")

        for (int i = 0i <7i++) {

            for (int j = 0j <4j++) {

                if (j <3) {

                    System.out.print(a[i][j] + " ")

                } else {

                    System.out.println(a[i][j] + " ")

                }

            }

        }

        System.out.println("矩阵a转置:")

        for (int i = 0i <4i++) {

            for (int j = 0j <7j++) {

                if (j <6) {

                    System.out.print(b[i][j] + " ")

                } else {

                    System.out.println(b[i][j] + " ")

                }

            }

        }

代码写得烂不要喷我,我想解决思路就是这样吧!

你的Java矩阵转置程序我帮你改好了,主要问题是应该把矩阵中以主对角线对称的数两两交换,而不是简单赋值,冲掉原来的数,而且for-j循环只要访问主对角线下方的数就可以了,不要访问全矩阵的数,那样会使矩阵主对角线下方的数交换两次,从而等于没有转置.

完整的Java矩阵转置程序如下(改动的地方见注释)

package cn.itcast.chapter01

public class ZhuanZhi {

 public static void main(String[] args) {

  int a[][]={{1,2,3},{4,5,6},{7,8,9}}

  for(int i=0i<a.lengthi++)

  {

   for(int j=0j<ij++)//这里把for(int j=0j<a[i].lengthj++)改成for(int j=0j<ij++)只访问主对角线下方的数

   {

    //这里交换主对角线下方的数和主对角线上方的数

    int temp=a[i][j]

    a[i][j]=a[j][i]

    a[j][i]=temp

 

   }

 

  }

  //这里单独输出转置后的矩阵

  for(int i=0i<a.lengthi++)

  {

   for(int j=0j<a[i].lengthj++)

   {

    System.out.print(a[i][j]+" ")

   }

   System.out.println()

  }

 }

}

运行结果