Buenas noches.
Te paso el codigo que siempre eh utilizado para la multiplicacion de matrices.
- class MultiplicacionMatrices{ 
-   
-  //Me extrae una fila dada de una matriz en forma de vector (arreglo) 
-  public static int []filaMatriz(int [][]matriz, int fila){ 
-   int []arregloAuxiliar = new int[matriz[fila].length]; 
-   for(int i = 0; i < arregloAuxiliar.length; i++){ 
-    arregloAuxiliar[i] = matriz[fila][i]; 
-   } 
-   return arregloAuxiliar; 
-  } 
-   
-  //Me extrae una columna dada de una matriz en forma de vector (arreglo) 
-  public static int []columnaMatriz(int [][]matriz, int columna){ 
-   int []arregloAuxiliar = new int[matriz.length]; 
-   for(int i = 0; i < arregloAuxiliar.length; i++){ 
-    arregloAuxiliar[i] = matriz[i][columna]; 
-   } 
-   return arregloAuxiliar; 
-  } 
-   
-  //Me devuelve el valor de una celda segun la multiplicacion de dos matrices 
-  public static int valorCelda(int [][]matrizA, int [][]matrizB, int fila, int columna){ 
-   int suma = 0; 
-   /* 
-   Tomo la fila de la primera matriz y la columna de la segunda matriz, 
-   para posteriormente multiplicar celda por celda 
-    */ 
-   int []filaMatrizA = filaMatriz(matrizA, fila); 
-   int []columnaMatrizB = columnaMatriz(matrizB, columna);   
-   
-    for(int i = 0; i < filaMatrizA.length; i++){ 
-   
-     /* 
-      * Aqui valido que la longitud de ambos vectores sean iguales, 
-      * en terminos mas acordes, que el numero de columnas de la primera matriz, 
-      * sea igual al numero de filas de la segunda matriz     
-     */ 
-   
-     if(filaMatrizA.length == columnaMatrizB.length){ 
-     suma += filaMatrizA[i] * columnaMatrizB[i]; 
-     }else{ 
-      System- . out- . println("El numero de columnas de la primera matriz es diferente al numero de filas de la segunda matriz");
 
-      break;    
-     }       
-    }   
-   
-   return suma; 
-    } 
-   
-    //Me devuelve una matriz, producto de la multiplicacion de dos matrices 
-  public static int [][]multiplicacionMatriz(int [][]matrizA, int [][]matrizB){ 
-   int [][]matrizAuxiliar = new int[matrizA.length][matrizA[0].length]; 
-   for(int i = 0; i < matrizA.length; i++){ 
-    for(int j = 0; j < matrizA[i].length; j++){ 
-     matrizAuxiliar[i][j] = valorCelda(matrizA, matrizB, i, j);      
-    } 
-   } 
-   return matrizAuxiliar;  
-  } 
-  //imprime los valores de una matriz 
-  public static void imprimirMatriz(int [][]matriz){ 
-   System- . out- . println("-------------------------------");
 
-   for(int i = 0; i < matriz.length; i++){ 
-    for(int j = 0; j < matriz[i].length; j++){ 
-     System- . out- . print(- matriz [- i ][- j ]+"\t");
 
-    } 
-   } 
-   System- . out- . println("-------------------------------");
 
-  } 
-   
-  //imprime el procedimiendo de la 'matriz de recorrido' de una matriz 
-  public static void-  main (String []- args ){
 
-   /* 
-   Nota importante: 
-   - Sean las matrices A y B; A tenga el mismo número de columnas que B de filas para que  exista A*B 
-   - Sean las matrices B y A; B tenga el mismo número de columnas que A de filas para que  exista A*B 
-   */ 
-   int [][]matrizA ={{1,0,0,1}, 
-         {1,4,0,1}, 
-         {1,9,0,11}, 
-         {1,5,6,0}}; 
-   
-   int [][]matrizB ={{11,0,0,1}, 
-         {1,8,0,1}, 
-         {0,9,0,5}, 
-         {1,7,6,0}}; 
-   
-   System- . out- . println("Matriz A");
 
-   imprimirMatriz(matrizA); 
-   
-   System- . out- . println("Matriz B");
 
-   imprimirMatriz(matrizB); 
-   
-   System- . out- . println("Matriz A * Matriz B");
 
-   imprimirMatriz(multiplicacionMatriz(matrizA,matrizB)); 
-   
-   
-   //Note que si A y B son diferentes A*B diferente de B*A (A*B <> B*A) 
-   System- . out- . println("Matriz B * Matriz A");
 
-   imprimirMatriz(multiplicacionMatriz(matrizB,matrizA)); 
-  } 
-   
- } 
Espero te sirva!
Mod: Los códigos deben ir en etiquetas GeSHi