java - 如何将列与 java 2d 数组中的特定索引交换?

标签 java arrays indexoutofboundsexception

所以我一直在尝试解决以下问题:

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

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

示例输入 1:

  • 3 4
  • 11 12 13 14
  • 21 22 23 24
  • 31 32 33 34
  • 0 1

示例输出 1:

  • 12 11 13 14
  • 22 21 23 24
  • 32 31 33 34

为了解决这个问题,我编写了以下代码:

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中的异常:Main.main(Main.java:15)处的索引11超出长度4的范围。

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

最佳答案

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

上述错误是因为您直接将值读取到 i 和 j 中,但您忘记了在 matrix[][] 内设置值,正如 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();
        }
    }
}

关于java - 如何将列与 java 2d 数组中的特定索引交换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60904278/

相关文章:

java - 使用 java : what is the best practice for the temp directory? 在 domino 服务器上写入临时文件

c# - 访问 Memory<T> 的底层数组

java - 递归 main 方法中的 ArrayIndexOutOfBoundsException

arrays - 将数组分为 k 个或更少的子部分,以最小化每个部分的最大总和

c++ - 读取部分字符串到整数数组

Java:数组索引越界异常

android - 从 map 中移除 OverylayItem

java - ldap超时在linux中不起作用

java - CXF 用户名 token 问题

java - 将 double 舍入到 int 始终为较小的值