笔试题之反转二维数组

要求:

输入:[[1,2,3],[4,5,6],[7,8,9]]
输出:[[7,8,9],[4,5,6],[1,2,3]]
给定二维数组反转方法:
public int[][] convert (int[][] matrix) {}

分析:

如果这个题没有给二维数组反转的方法,把输入当做字符串去处理会简单一些,但是,它给了。。。这就需要我们去解析字符串,填充一个二维数组,然后作为参数传给convert方法
下面给出我的代码,重点部分我都做了注释,大家应该可以看懂

public class Test6 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String ss = sc.next();
        String ss1 = ss.substring(2,ss.length()-2);   //去掉开头的2个[ 和 结尾的2个]
        String[] ss2 = ss1.split("],\\[");     //按照],[去分割,得到长度为3的字符串数组

        int[][] arr = new int[ss2.length][];          //我们需要填充的二维数组的第一维的长度就是ss2.length

        for (int i = 0; i < ss2.length; i++) {
            String[] tmp = ss2[i].split(","); //此时得到的字符串数组tmp中每个元素都是只含数字的字符串
            arr[i] = new int[tmp.length];
            for(int j = 0; j < tmp.length; j++) {
                arr[i][j] = Integer.valueOf(tmp[j]); //利用Integer.valueOf()方法将一个字符串转换为int类型
            }

        }

        convert(arr);

        //符合题目要求的格式化输出
        System.out.print("[");
        for (int i = 0;i < arr.length;i++) {
            System.out.print("[");
            for (int j = 0;j < arr[i].length;j++) {
                if (j == arr[i].length - 1) {
                    System.out.print(arr[i][j]);
                }else {
                    System.out.print(arr[i][j] + ",");
                }
            }
            if (i == arr.length-1) {
                System.out.print("]");
            }else {
                System.out.print("],");
            }
        }
        System.out.print("]");


    }


    public static int[][] convert (int[][] matrix) {
        int[] temp;

        for (int i = 0; i < matrix.length / 2; i++) {  //只需要将二维数组的第二维反转即可
            temp = matrix[i];
            matrix[i] = matrix[matrix.length-i-1];
            matrix[matrix.length-i-1] = temp;
        }

        return matrix;
    }
}

运行结果

在这里插入图片描述

在这里插入图片描述
欢迎大家一起交流!Java全套学习资料的电子版,我已经上传网盘,免费分享给大家,关注我的公众号,菜单栏–>技术相关–>免费资源即可领取,还有网课查答案,包括学习通、智慧树、mooc,内容涵盖计算机、政治等等,还有其他免费资源(简历模板、电子版书籍和考试资料等等),说不准大家会有用(分享干货)!

扫码加关注吧!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值