Boa tarde! Enfim, estou desenvolvendo um código que multiplica matrizes para teste de aptidão. Porém estou com um maldito erro: ArrayIndexOutOfBoundsException.
public static int[][] multiplicaMatrizes(int matriz1[][], int matriz2[][]) {
int resultado[][] = new int [matriz1.length][TestaCalculadora.tamColunas2];
for (int j = 0; j < matriz1.length; j++) {
for (int i = 0; i < matriz1.length; i++) {
resultado[j][i] += matriz1[j][i] * matriz2[i][0];
for (int k = 0; k < matriz1.length; k++) {
resultado[j][k] += matriz1[j][i] * matriz2[i][k];
}
}
}
return resultado;
}
Não entendi o porque você usar 3 for’s se as matrizes possuem apenas 2 dimensões?
Além disso, você está definindo que a matriz terá a mesma quantidade de colunas que as linhas… não seriam 2 laços dessa forma?
for (int i = 0; i < matriz1.length; i++) {
for (int j = 0; j < matriz1[i].length; j++) {
resultado[i][j] += matriz1[i][j] * matriz2[i][j];
}
}
return resultado;
Eu ja resolvi, vlw. Eu usei 3 for’s pq a multiplicação de matrizes funciona assim: vc multiplica as linhas da primeira matriz pelas colunas da segunda.
O código ficou o seguinte:
public static int[][] multiplicaMatrizes(int matriz1[][], int matriz2[][]) {
int[][] resultado = new int[matriz1.length][matriz2[0].length];
for (int i = 0; i < matriz1.length; i++) {
for (int j = 0; j < matriz2[0].length; j++) {
for (int k = 0; k < matriz1[0].length; k++) {
resultado[i][j] += (matriz1[i][k] * matriz2[k][j]);
}
}
}
return resultado;
}