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á!
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!