首页 > 解决方案 > 在java中的二维数组中的行之间交换

问题描述

我正在编写一个应该在两个 2d 行之间交换的 java 代码,并且我已经完成了它,但我想检查我的工作是否正确以及是否需要进行任何修改。

import java.util.*;
public class Main {
    
    public static void printMatrix(int[][] matrix){
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++)
                System.out.print(matrix[i][j] + " ");
            System.out.println();
        }
    }
    public static void exchangeAnyTwoRows(int[][] matrix,
                                          int K, int L)
    {
        for (int i = 0; i < matrix[0].length; i++) {
            
            int temp = matrix[K - 1][i];
            matrix[K - 1][i] = matrix[L - 1][i];
            matrix[L - 1][i] = temp;
        }
        
        printMatrix(matrix);
    }
    
    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);
    }
}

任何帮助将非常感激。

标签: javaarrays

解决方案


似乎您正在交换两行中的每个元素。我认为你不需要那样做。您可以一次交换行:

  public static void exchangeAnyTwoRows(int[][] matrix, int r1, int r2) {
    int[] temp = matrix[r1];
    matrix[r1] = matrix[r2];
    matrix[r2] = temp;
  }

另一条评论是上面的代码会抛出ArrayIndexOutOfBoundsException. 原因是您的行索引从 1 开始。您可以减少方法内的每个索引,但是,只使用基于 0 的索引会更好地避免混淆。

因此,您可能需要分别修改 和的值K和。L12


推荐阅读