対象となる要件は次のとおりです。
注:2次元行列が転置されたときのforループの列の初期値は行数です.forループが0から始まる場合、転置された行列は転置されます再び元の行列に。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int flag = 0;
Scanner scan=new Scanner(System.in);
int b = scan.nextInt();
int [][] a = new int[b][b];
for(int i = 0;i<b;i++) //初始化二维数组
for(int j = 0;j<b;j++)
{
a[i][j] = i * b + j + 1;
}
for(int i = 0;i<b;i++) //矩阵转置
for(int j = i;j<b;j++)
{
int temp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = temp;
}
for(int i = 0;i<b;i++) //二维矩阵输出
for(int j = 0;j<b;j++)
{
if(flag%3==0 && flag!=0)
System.out.println();
System.out.printf("%4d",a[i][j]);
flag++;
}
System.out.println();
}
}