Seguimos con los ejemplos de matrices, ahora que ya hemos visto como crear una matriz con Java. En este caso vamos a realizar la suma de dos matrices.
Para llevar a cabo el ejemplo hemos definido un método Java que nos permite sumar las matrices. La signatura de dicho método será la siguiente:
public static int[][] sumarmatrices (int[][] m1,int[][] m2) throws Exception {...}
Como podemos ver el método Java recibe dos matrices y devuelve una, que será el resultado de la misma. Por otro lado puede generar una Exception. Este caso será cuando las dimensiones de las matrices sean diferentes. Ya que cuando las dimensiones de las matrices son diferentes, estas no se pueden sumar.
Así la comprobación de las dimensiones de las matrices las haremos apoyándonos en la propiedad length:
if ((m1.length == m2.length) && (m1[0].length==m2[0].length)){...}
En el caso de no coincidir los tamaños, es cuando elevamos la Exception.
if ((m1.length == m2.length) && (m1[0].length==m2[0].length)){
...
} else
throw new Exception();}
En caso afirmativo procederemos a sumar los elementos de las matrices. Hay que recordar que la suma de las matrices es la suma de todos sus elementos posición a posición. Por lo tanto la suma es sencilla. Solo tenemos que recorrer todos los elementos y dejar el resultado en la matriz destino.
Así, lo primero es crear una matriz resultado de las mismas dimensiones:
int[][] suma = new int[m1.length][m1[0].length];
Para recorrer los elementos nos apoyamos en un bucle for y, nuevamente, en la propiedad length.
for (int x=0; x < m1.length; x++) {
for (int y=0; y < m1[x].length; y++) {
suma[x][y]=m1[x][y]+m2[x][y];
}
}
Ahora solo nos quedará devolver la matriz con el resultado de la suma.
return suma;
Invocar el método es sencillo. Solo hay que tener en cuenta que puede soltar una Exception y por lo tanto lo deberemos de invocar desde un método try-catch
int [][] matriz1 = {{2,4,4},{6,6,9}};
int [][] matriz2 = {{2,4,4},{6,6,9}};
int [][] matriz = new int[3][3];
try {
matriz = sumarmatrices(matriz1,matriz2);
pintarmatriz(matriz);
} catch(Exception e){
System.out.println("Matrices de diferente dimensión");
}