es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Recorrer matriz 2D para tamaño variable por columnas.

Tengo una matriz 2D como esta:

int[][] v = {{1,2,3}, {4,5}, {6,4,3,}, {1}, {7,8,9}};

Quiero imprimirla así:

1,4,6,1,7,2,5,4,8,3,3,9

Entiendo que tenemos que recorrerla columnas por columna, pero el tamaño de las columnas no está fijado. ¿Cómo puedo lograr lo anterior?

He intentado lo siguiente, pero me da un IndexArrayOutOfBoundException:

for(int i = 0; i < v.length; i++){
      for(int j = 0; j< v[i].length; j++) {

          System.out.println(v[j][i]);

      }
    }

¿Cómo puedo lograr lo que necesito?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr imprimir la matriz 2D en el formato de salida deseado, es necesario recorrer la matriz columna por columna. El problema en su código es que está intentando acceder a los elementos utilizando los índices incorrectos, lo que resulta en una IndexArrayOutOfBoundException.

    Aquí está el código corregido que debería funcionar:

    int[][] v = {{1,2,3}, {4,5}, {6,4,3}, {1}, {7,8,9}};
    
    int maxLength = 0;
    
    // Encuentra la longitud máxima de las submatrices
    for (int i = 0; i < v.length; i++) {
        if (v[i].length > maxLength) {
            maxLength = v[i].length;
        }
    }
    
    // Recorre columna por columna e imprime los elementos
    for (int i = 0; i < maxLength; i++) {
        for (int j = 0; j < v.length; j++) {
            if (i < v[j].length) {
                System.out.print(v[j][i] + ",");
            }
        }
    }
    
    // Salida: 1,4,6,1,7,2,5,4,8,3,3,9
    

    En el código anterior, primero encontramos la longitud máxima de las submatrices al recorrer la matriz una vez. Luego usamos esta longitud máxima para recorrer la matriz columna por columna e imprimir los elementos. La condición if (i< v[j].length) dentro del bucle interno evita la IndexArrayOutOfBoundException verificando si la submatriz actual tiene un elemento en la posición de columna actual.

    ¡Espero que esto ayude!

Comments are closed.