¿Cómo puedo copiar una matriz 2D y añadir una nueva fila para almacenar la suma de las columnas en Java?

McKinsley Apollon:

Básicamente tengo una función que recibe una matriz bidimensional, añade una fila adicional y luego se calcula la suma de las columnas y almacena los resultados para cada columna individual en la fila extra que se creó anteriormente. Aquí está mi código:

public static int[][] sum(int[][] array) {
    int tempArray[][] = new int[array.length + 1][array[0].length];

    for (int column = 0; column < tempArray[0].length; column++) {
        int total = 0;
        for (int row = 0; row < tempArray.length; row++) {
            total += tempArray[row][column];
        }

        tempArray[tempArray.length][column] = total;

    }

    return tempArray;
}

Así que cuando corro un bucle for para imprimir los resultados consigo un error ArrayIndexOutOfBounds por alguna razón que se refiere a la función. Creo que mi lógica es correcta, pero me parece que no puede hacer que funcione. Para algunos más contexto a los valores de la matriz son introducidos por el usuario. Gracias a quien responderá!

Md Golam Rahman Tushar:

Que está recibiendo ArrayIndexOutOfBounds porque está accediendo al índice de más de la cota de matriz en la línea de abajo:

tempArray[tempArray.length][column] = total;

Reemplazarlo con siguiendo la línea resolvería su problema:

tempArray[tempArray.length - 1][column] = total;

Sin embargo, su código todavía no funcionará como su lógica sumatoria tiene errores. Se calcula el total en la línea siguiente.

total += tempArray[row][column];

Sin embargo, su tempArray no tiene ningún valor, sino ceros. Para solucionar esto, asegúrese de que inicie la tempArray por los valores de la matriz como la siguiente:

int tempArray[][] = new int[array.length + 1][array[0].length];

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

Espero que esto va a resolver su problema. codificación feliz!

Supongo que te gusta

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