我如何用Java 2d数组中的特定索引交换列?

问题描述 投票:-1回答:1

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

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

输入包含不超过100的矩阵尺寸n和m,然后是矩阵的元素,然后是索引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”中的Exception java.lang.ArrayIndexOutOfBoundsException:在Main.main(Main.java:15)的长度为4的索引11越界。

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

java arrays indexoutofboundsexception
1个回答
0
投票

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

以上错误是因为您未在matrix [] [];]中设置值。

使用循环设置值

  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();
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.