【Java基础】矩阵转置问题

输入一个数字构成的矩形, 将矩形的值进行转置后打印
输入:
第一行 正整数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] 覆盖,而这个值可能是你接下来要用来转置其他元素的。

为了避免这个问题,你需要一个额外的矩阵来存储转置的结果,或者至少需要使用一个临时变量来暂存被覆盖的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七洛殇Atrosenet.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值