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