Los requisitos del tema son los siguientes.
Nota: El valor inicial de la columna en el bucle for cuando se transpone la matriz bidimensional es el número de filas. Si el bucle for comienza desde 0, la matriz transpuesta se transpondrá hacia atrás a la matriz original de nuevo.
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();
}
}