编写Java程序,使二维数组的行列转换

我做完,只能将相同的行数和列数交换,怎么修改,才能使不同的行数和列数交换啊?还有,结果到最后,全是0,我怎么才能加入元素值啊?
题目是这样子的:编写java程序,从键盘确定数组的维数,从键盘输入二维数组各个元素值,打印输出这个二维数组,并打印输出行列颠倒的二维数组。

public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int c;
        System.out.println("请输入行数:");
        c=in.nextInt(); 
        int b;
        System.out.println("请输入列数:");
        b = in.nextInt();  
        final int size= c;
        final int size1= b;
        int[][] a1=new int[c][b];
        int[][] a2=new int[a1.length][];

        for(int i=0;i<a1.length;i++){

        a2[i]=new int[a1.length];

        }

        for(int i=0;i<a1.length;i++){

        for(int j=0;j<a1.length;j++){

        a2[j][i]=a1[i][j];

        System.out.print(a1[i][j]);

        System.out.print(" ");

        }

        System.out.println();

        }

        System.out.println("转置之后为:");

        for(int m=0;m<a2.length;m++){

        for(int n=0;n<a2.length;n++){

        System.out.print(a2[m][n]);

        System.out.print(" ");

        }

        System.out.println();

        }

        }

图片说明


public class MAIN {

    public static void main(String[] args) {
        Scanner in= new Scanner(System.in);
        System.out.println("请输入数组的行和列:");
        int m =in.nextInt();               //定义一个数组的行 m
        int n =in.nextInt();               //定义一个数组的列 n
        int[][] arr1 = new int[m][n];      //定义一个数组mxn为arr1
        int[][] arr2 = new int[n][m];      //定义一个数组nxm为arr2 此数组为颠倒后的数组
        System.out.println("请输入数组的元素:");
        //给二维数组赋值
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                arr1[i][j] = in.nextInt();
            }
        }
        //打印一次输入的二维数组
        System.out.println("依次打印输入的二维数组:");
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                System.out.print(arr1[i][j] + "   ");
            }
            System.out.println();
        }
        //矩阵行列进行交换
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                arr2[j][i] = arr1[i][j];
            }
        }
        //输出交换后的矩阵
        System.out.println("依次输出行列颠倒的二维数组:");
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                System.out.print(arr2[i][j] + "   ");
            }
            System.out.println();
        }
    }
}