public int filas,columnas; public Matriz(){ filas=1; columnas=1; } public Matriz(int f,int c){ filas=f; columnas=c; matriz=new int[filas][columnas]; } public void Llenar(int valor,int i,int j){ // Introduce un valor en la matriz en la // posicion i,j matriz[i][j]=valor; } public int[] getFila(int k){ // Devuelve un vector con la fila k. int[] row=new int[matriz[k].length]; for(int i=0;i<row.length;i++){ row[i]=matriz[k][i]; } return row; } public int[] getColumna(int k){ // Devuelve un vector con la columna k. int[] column=new int[matriz.length]; for(int i=0;i<column.length;i++){ column[i]=matriz[i][k]; } return column; } public void Mostrar(){ // Muestra los elementos de la matriz. System.out.println("Matriz:"); for(int i=0;i<filas;i++){ for(int j=0;j<columnas;j++){ System.out.print(matriz[i][j]+" "); } System.out.println(); } } } ---------------------- Clase Multiplicacion ----------------------------- public class Multiplicacion{ public Matriz A,B,C; public boolean tieneSolucion; public Multiplicacion(Matriz matrizA,Matriz matrizB){ A=matrizA; B=matrizB; InicializarMatrizDeSolucion();// Inicializa la matriz C si y solo si se puede. if(tieneSolucion){ Multiplicar(); } } private void InicializarMatrizDeSolucion(){ if(A.columnas==B.filas){ // Condicion para la multiplicacion C=new Matriz(A.filas,B.columnas); tieneSolucion=true; } else{ // Si no se cumple no se puede multiplicar C=new Matriz(); tieneSolucion=false; } } private void Multiplicar(){ // Funcion que multiplica. for(int i=0;i<C.filas;i++){ // Recorre toda la matriz for(int j=0;j<C.columnas;j++){ C.matriz[i][j]=Elemento(i,j); // Y la llena con un entero. } } } private int Elemento(int i,int j){ // Entero que resulta de la multiplicacion int[] fila=A.getFila(i); // Tomamos la fila "i" y la columna "j" int[] columna=B.getColumna(j); int resultado=0; for(int k=0;k<fila.length;k++){ // Multiplicamos como se hace resultado+=fila[k]*columna[k]; // normalmente } return resultado; } public Matriz Solucion(){ // Devolvemos la matriz C la que tiene la solucion. return C; } } ---------------------- Clase Principal ----------------------------- import java.io.*; import java.util.*; public class Main{ public static void main(String[] arg){ Scanner cin=new Scanner(System.in); System.out.print("\r"); Matriz A,B,C; Multiplicacion m; int f,c; System.out.println("Dimensiones de la Matriz A:"); System.out.print(" - Filas : "); f=cin.nextInt(); System.out.print(" - Columnas: "); c=cin.nextInt(); A=new Matriz(f,c); System.out.println("Dimensiones de la Matriz B:"); System.out.print(" - Filas : "); f=cin.nextInt(); System.out.print(" - Columnas: "); c=cin.nextInt(); B=new Matriz(f,c); System.out.println("Introducir Elementos: "); System.out.println("Matriz A:("+A.filas+"x"+A.columnas+")"); for(int i=0;i<A.filas;i++){ for(int j=0;j<A.columnas;j++){ A.Llenar(cin.nextInt(),i,j); } } System.out.println("Matriz B:("+B.filas+"x"+B.columnas+")"); for(int i=0;i<B.filas;i++){ for(int j=0;j<B.columnas;j++){ B.Llenar(cin.nextInt(),i,j); } } m=new Multiplicacion(A,B); C=m.Solucion(); A.Mostrar(); B.Mostrar(); if(m.tieneSolucion){ C.Mostrar(); } else{ System.out.println("No se puede resolver."); } } }