Estoy tratando de escribir un método de multiplicación de matriz cuadrada simple usando matrices multidimensionales.
package matrixmultiplication; import java.util.Scanner; public class Matrixmultiplication { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int [][] a,b,c; int size; System.out.print("Enter the Size of the matrix :"); size = scan.nextInt(); a=b=c=new int[size][size]; System.out.println("Enter the elements of the First matrix"); for(int i=0;i<size;i++) { for(int j=0;j<size;j++) { System.out.print("Enter the element a[" + i +"]["+ j + "] : "); a[i][j] = scan.nextInt(); } } System.out.println("Enter the elements of the Second matrix"); for(int i=0;i<size;i++) { for(int j=0;j<size;j++) { System.out.print("Enter the element b[" + i +"]["+ j + "] : "); b[i][j] = scan.nextInt(); } } System.out.println("The Product of the two matrix is : "); for(int i=0;i<size;i++) { for(int j=0;j<size;j++) { int sum = 0; for(int k=0;k<size;k++) { sum +=(a[i][k] * b[k][j]); } c[i][j] = sum; System.out.print(c[i][j] + "\t"); } System.out.println(); } } }Cuando ejecuto este programa en Netbeans, obtengo el siguiente resultado:
Enter the Size of the matrix :2 Enter the elements of the First matrix Enter the element a[0][0] : 1 Enter the element a[0][1] : 1 Enter the element a[1][0] : 1 Enter the element a[1][1] : 1 Enter the elements of the Second matrix Enter the element b[0][0] : 1 Enter the element b[0][1] : 1 Enter the element b[1][0] : 1 Enter the element b[1][1] : 1 The Product of the two matrix is : 2 3 3 10La salida correcta de este programa debe ser:
2 2 2 2¿Puede alguien decirme qué está mal con este código?
El problema está aquí:
a=b=c=new int[size][size]; Esto crea solo una matriz y hace que todas las variables apunten a ella. Entonces, actualizar los elementos de c es también actualizar los elementos de a y b .
Cree 3 matrices en su lugar:
a=new int[size][size]; b=new int[size][size]; c=new int[size][size];