二维数组队列互换

二维数组行列互换
题目描述
将一个二维数组的行和列元素互换,存放到另一个二维数组中。

已知行N<=20,列M<=20



输入
第一行输入两个整数m和n分别表示二维数组的行数和列数(均小于20)。 

下一行输入该二维数组的各个元素值。

输出
输出行列变换后的数组。




样例输入
4 4
1 2 5 3
5 3 4 2
0 6 9 1
1 2 3 4
样例输出
1 5 0 1
2 3 6 2
5 4 9 3
3 2 1 4

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner rd=new Scanner(System.in);
int m=rd.nextInt();
int n=rd.nextInt();
int arr[][]=new int[m][n];
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr[i].length;j++)
{
arr[i][j]=rd.nextInt();
}
}
int arr1[][]=new int[n][m];
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<arr[i].length;j++)
{
if(j==arr[i].length-1)
{
System.out.print(arr[j][i]);
}
else
{
System.out.print(arr[j][i]+" ");
}
}
System.out.println();
    }
}

我这样只能行数列数一样才能输出~要怎样改才能列数行数不一样也能实现
------最佳解决方案--------------------
package com.fenghua.****;

public class TestTransposition {
int col;
int row;
/**转换方法 将一个数组进行转置 
 * 原理很简单 应该还会有很多更好的办法
 * 
 * @param input
 * @return
 */
public int[][] trans(int[][] input) {
int[][] output = null;
row = input.length;
if (row > 0) {
col = input[0].length;
}
output = new int[col][row];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
output[j][i] = input[i][j];
}
}
return output;
}
public static void main(String[] args){
//若是需要得到转置数组,应该调用上面的转置方法
// int[][] in={{1,2,3},{3,4,5}};
// int[][] out=new TestTransposition().trans(in);
// for (int i = 0; i < out.length; i++) {
// for (int j = 0; j < out[i].length; j++) {
// System.out.print(out[i][j]);
// }
// System.out.println("");
// }
//若只是想输出得到效果  这应该是可以的
int[][] in={{1,2,3},{3,4,5}};
for(int i=0;i<in[0].length;i++){
for(int j=0;j<in.length;j++){
System.out.print(in[j][i]);
}
System.out.println("");
}
}
/*a[2][3]---->a[3][2]
 * a[0][0]---->a[0][0]
 * a[0][1]---->a[1][0]
 * a[0][2]----->a[2][0]
 * a[1][0]---->a[0][1]
 * a[1][1]---->a[1][1]
 * a[1][2]----->a[2][1]
*/
//故此 初步想法应是通过反向循环,即先循环列,在循环行来实现。

}