输入一个数字构成的矩形, 将矩形的值进行转置后打印
输入:
第一行 正整数n(1<n<10), 表示矩阵的边长
随后输入一个矩阵
输出:
转置后的矩阵
样例输入:
3
1 2 3
4 5 6
7 8 9
样例输出:
1 4 7
2 5 8
3 6 9
现在我们来编写这个代码
先写主函数且判断数据有效性,将扭转矩阵的函数封装到外
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入矩阵边长:");
int n = sc.nextInt();
if (n > 1 && n < 10) {
spinMatrix(n);
} else {
System.out.println("输入的数据无效,请重试");
}
}
接下来我们来写spinMartix函数
public static void spinMatrix(int n){
Scanner sc = new Scanner(System.in);
int[][] arr = new int[n][n];
//输入矩阵
System.out.println("请输入整数矩阵元素:");
for(int i=0; i<n; i++) {
for (int j = 0; j < n; j++) {
arr[i][j] = sc.nextInt();
}
}
//扭转矩阵,创建新矩阵之后逆转放入
int[][] arr2= new int[n][n];
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
arr2[j][i] = arr[i][j];
}
}
//输出矩阵
System.out.println("输出矩阵为:");
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
System.out.print(arr2[i][j] + " ");
}
System.out.println();
}
}
为什么矩阵不用temp来进行元素交换呢?
在转置的过程中,你会覆盖一些还未处理的元素。例如,当你在转置第 i 行和第 j 列时,arr[j][i] 的原始值会被 arr[i][j] 覆盖,而这个值可能是你接下来要用来转置其他元素的。
为了避免这个问题,你需要一个额外的矩阵来存储转置的结果,或者至少需要使用一个临时变量来暂存被覆盖的值。