¿Cómo me cambiaré columnas con unos índices específicos en Java 2D matrices?

aaartyomsss:

Así que he estado tratando de resolver los siguientes problemas:

Dada una matriz bidimensional (matriz) y los dos números: i y j. Intercambiar las columnas con los índices i y j dentro de la matriz.

La entrada contiene dimensiones de la matriz n y m, que no exceda de 100, entonces los elementos de la matriz, entonces los índices i y j.

Ejemplo de entrada 1:

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

Salida de muestra 1:

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

Con el fin de resolverlo, escribí siguiente código:

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);
    }
}

Y el error es Excepción en hilo java.lang.ArrayIndexOutOfBoundsException "principal": Índice 11 fuera de los límites para la longitud de 4 a Main.main (Main.java:15).

¿Cuál podría ser el problema y la solución a ella?

Super guay. :

Excepción en hilo java.lang.ArrayIndexOutOfBoundsException "principal": Índice 11 fuera de los límites para la longitud de 4 a Main.main (Main.java:15).

Por encima de error es porque esté leyendo directamente los valores en i y j pero se olvidó el establecimiento de los valores dentro de la matriz [] [] según lo dicho por Vince y Jim en los comentarios.

Utilice bucle para establecer los valores

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

y luego bucle a través de filas a valores de canje

Aquí va el código

En vivo: 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();
        }
    }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=365961&siteId=1
Recomendado
Clasificación