如何交换 java 二维数组中具有特定索引的列?

How do I swap columns with a specific indexes in java 2d arrays?

所以我一直在努力解决以下问题:

给定一个二维数组(矩阵)和两个数字:i 和 j。在矩阵中交换索引为 i 和 j 的列。

输入包含矩阵维度n和m,不超过100,然后是矩阵的元素,然后是索引i和j。

示例输入 1:

示例输出 1:

为了解决这个问题,我写了下面的代码:

import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int rows = scanner.nextInt();
        int tables = scanner.nextInt();
        int[][] matrix = new int[rows][tables];

        int i = scanner.nextInt();
        int j = scanner.nextInt();

        for (int w = 0; w < rows; w++){
            int temp = matrix[w][i];
            matrix[w][i] = matrix[w][j];
            matrix[w][j] = temp;
        }

        System.out.print(matrix);
    }
}

错误是线程中的异常 "main"java.lang.ArrayIndexOutOfBoundsException:索引 11 在长度 4 处超出范围 Main.main(Main.java:15).

可能是什么问题及其解决方案?

线程 "main" java.lang.ArrayIndexOutOfBoundsException 中出现异常:索引 11 在 Main.main(Main.java:15) 处超出长度 4 的范围。

以上错误是因为您直接将值读入 i 和 j 但您忘记了在矩阵 [][] 中设置值,正如 vince 和 jim 在评论中所说。

使用循环设置值

  for(int k=0;k<rows;k++){
      for(int l=0;l<cols;l++){
             matrix[k][l]=scanner.nextInt();
      }   
   }

然后遍历行以交换值

这是代码

直播:https://onlinegdb.com/rJJ-kMTUL

import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int rows = scanner.nextInt();
        int cols = scanner.nextInt();
        int[][] matrix = new int[rows][cols];
        for(int k=0;k<rows;k++){
         for(int l=0;l<cols;l++){
             matrix[k][l]=scanner.nextInt();
         }   
        }
        int i = scanner.nextInt();
        int j = scanner.nextInt();
        for(int k=0;k<rows;k++){
        int temp =  matrix[k][i];
        matrix[k][i] = matrix[k][j];
        matrix[k][j]=temp;      
        }
         for(int k=0;k<rows;k++){
         for(int l=0;l<cols;l++){
             System.out.print( matrix[k][l]+" ");
         }
         System.out.println();
        }
    }
}