1 package test;
2 public class Arithmetic3
3 {
4 //声明不可改变的全局变量
5 static final int p=0;
6 static void arith(int[][] arr)
7 {
8 //定义一个以最大列为标准的数组
9 int[][] newArr=new int[arr[p].length][arr[p].length];
10 //定义一个以最大行为标准的数组
11 int[][] newArr1=new int[arr.length][arr.length];
12 //将arr数组值赋给新数组newArr或newArr1
13 for(int i=0;i<arr.length;i++)
14 {
15 for(int j=0;j<arr[p].length;j++)
16 {
17 if(arr.length<=arr[p].length)
18 newArr[i][j]=arr[i][j];
19 else
20 newArr1[i][j]=arr[i][j];
21 }
22 }
23
24 //两种情况下的转置
25 if(arr.length<=arr[p].length)
26 {
27 //newArr矩阵转置
28 for(int i=0;i<arr[p].length;i++)
29 {
30 for(int j=i;j<arr[p].length;j++)
31 {
32 if(i!=j)
33 {
34 int temp=newArr[i][j];
35 newArr[i][j]=newArr[j][i];
36 newArr[j][i]=temp;
37 }
38 }
39 }
40 }
41 else
42 {
43 //newArr1矩阵转置
44 for(int i=0;i<arr.length;i++)
45 {
46 for(int j=i;j<arr.length;j++)
47 {
48 if(i!=j)
49 {
50 int temp=newArr1[i][j];
51 newArr1[i][j]=newArr1[j][i];
52 newArr1[j][i]=temp;
53 }
54 }
55 }
56 }
57
58 //定义一个新的非标准数组,作为最后转置后的输出矩阵
59 int[][] newArr2=new int[arr[p].length][arr.length];
60 //将newArr或newArr1数据赋给newArr2
61 for(int i=0;i<arr[p].length;i++)
62 {
63 for(int j=0;j<arr.length;j++)
64 {
65 if(arr.length<=arr[p].length)
66 newArr2[i][j]=newArr[i][j];
67 else
68 newArr2[i][j]=newArr1[i][j];
69 }
70 }
71
72 //输出转置后的矩阵
73 outputArr(newArr2);
74 }
75
76 //定义输出数组的函数模块
77 static void outputArr(int[][] arr)
78 {
79 for(int i=0;i<arr.length;i++)
80 {
81 for(int j=0;j<arr[p].length;j++)
82 {
83 buWei(arr[i][j]);
84 if((j+1)%arr[p].length==0)
85 System.out.println();
86 }
87 }
88 }
89
90 //空格补位函数,保证矩阵输出后排列整齐
91 static void buWei(int x)
92 {
93 if(x>=0 && x<10)
94 System.out.print(" "+x);
95 else if(x<100)
96 System.out.print(" "+x);
97 else if(x<1000)
98 System.out.print(" "+x);
99 else if(x<10000)
100 System.out.print(" "+x);
101 else if(x<100000)
102 System.out.print(" "+x);
103 else if(x<1000000)
104 System.out.print(" "+x);
105 }
106
107 //主函数
108 public static void main(String[] args)
109 {
110 //要转置的矩阵
111 int[][] a={{11,34,5,56},
112 {4,54,43,0},
113 {23,6,38,8},
114 {25,9,36,8},
115 {25,9,35,8}};
116 System.out.println(" 原矩阵");
117 //输出原矩阵
118 outputArr(a);
119 System.out.println("\n 转置后的矩阵");
120 //输出转置后的矩阵
121 arith(a);
122 }
123 }