You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java二维数组行交换代码正确性校验及优化咨询

代码正确性说明

你当前的代码在入参符合预期的场景下是可以正确运行的,你给出的测试用例中交换第2、3行的输出结果符合预期:

2 1 4 
3 6 2 
1 2 3 
可优化调整点
  • 【缺失入参校验】现有代码没有对输入参数做合法性校验,遇到以下场景会直接抛出数组越界异常:
    • 传入的矩阵为null、空矩阵
    • 待交换的行号K、L小于1,或者大于矩阵总行数
    • 矩阵为行长度不一致的锯齿数组时,原有逻辑用matrix[0].length作为循环边界会导致部分列未交换/越界
  • 【交换逻辑可简化】Java的二维数组本质是一维数组的数组,每一行对应一个一维数组对象,无需逐元素交换,直接交换两行的引用即可,效率更高且天然适配锯齿数组:
    // 替换原有循环交换逻辑即可
    int[] temp = matrix[K - 1];
    matrix[K - 1] = matrix[L - 1];
    matrix[L - 1] = temp;
    
  • 【职责不清晰】exchangeAnyTwoRows方法同时承担了交换行、打印矩阵两个职责,复用性较差,建议将打印逻辑剥离,交换方法仅做交换操作,需要打印时由调用方主动调用printMatrix方法。
  • 【冗余导包】代码开头的import java.util.*;没有被使用,可以直接删除。
  • 【代码风格优化】
    • 内层for循环建议补充大括号,避免后续新增代码时出现逻辑错误
    • 参数名K、L建议改为小写的k、l,或者更表意的targetRow1、targetRow2,符合Java小驼峰命名规范
    • 可以在方法上补充JavaDoc注释说明参数含义、注意事项
优化后代码示例
public class Main {

    /**
     * 打印二维矩阵
     * @param matrix 待打印的二维矩阵
     */
    public static void printMatrix(int[][] matrix) {
        if (matrix == null || matrix.length == 0) {
            return;
        }
        for (int[] row : matrix) {
            for (int num : row) {
                System.out.print(num + " ");
            }
            System.out.println();
        }
    }

    /**
     * 交换矩阵的两行(行号从1开始计数)
     * @param matrix 待操作的矩阵
     * @param row1 待交换的第一行行号
     * @param row2 待交换的第二行行号
     */
    public static void exchangeAnyTwoRows(int[][] matrix, int row1, int row2) {
        // 入参校验
        if (matrix == null || matrix.length < 2) {
            return;
        }
        int maxRowNum = matrix.length;
        if (row1 < 1 || row1 > maxRowNum || row2 < 1 || row2 > maxRowNum || row1 == row2) {
            return;
        }
        // 转换为0基索引
        int index1 = row1 - 1;
        int index2 = row2 - 1;
        // 直接交换行引用
        int[] temp = matrix[index1];
        matrix[index1] = matrix[index2];
        matrix[index2] = temp;
    }

    public static void main(String[] args) {
        int k = 2, l = 3;
        int mat[][] = { { 2, 1, 4 }, { 1, 2, 3 }, { 3, 6, 2 } };
        exchangeAnyTwoRows(mat, k, l);
        printMatrix(mat);
    }
}

内容的提问来源于stack exchange,提问作者adnanadel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:45:05