乘以 2 矩阵时的打印问题

Issues with printing when multiplying 2 matrix

我试图对两个矩阵进行求和、减法和乘法运算,求和和减法工作正常,但是在进行乘法时,打印结果为 0。抱歉,西班牙语变量,我必须用西班牙语交付我的学校作业。

package Segundo_Parcial;

import java.util.Scanner;

public class matriz {

    private Scanner teclado;
    private int[][] matriz1;
    private int[][] matriz2;
    private int[][] suma;
    private int[][] resta;
    private int[][] multi;
    private float[][] divi;

    public void Datos() {
        teclado = new Scanner(System.in);
        matriz1 = new int[5][5];
        matriz2 = new int[5][5];
        suma = new int[5][5];
        resta = new int[5][5];
        multi = new int[5][5];
        divi = new float[5][5];

        System.out.println("             [ Matriz 1 ]              ");
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.println("Ingresa los numeros en la posicion [" + i + "][" + j + "] :");
                matriz1[i][j] = teclado.nextInt();
            }
        }
        System.out.println("             [ Matriz 2 ]              ");
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.println("Ingresa los numeros en la posicion [" + i + "][" + j + "] :");
                matriz2[i][j] = teclado.nextInt();

            }
        }

    }

    public void sumaYresta() {


        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                suma[i][j] = matriz1[i][j] + matriz2[i][j];

            }
        }
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                resta[i][j] = matriz1[i][j] - matriz2[i][j];
            }
        }


    }
    public void Multiplicacion(){
        int x=0, jd=0, id=0,i=0,j=0, resul=0; 

        for(i=0;i<5;){
            for(j=0;j<5;){
                for(jd=0;jd<5;jd++){
                    resul = matriz1[i][jd] * matriz2[jd][j];
                    resul+=resul;
                    if(jd==4){
                        for(int c=0;c<5;c++){
                            for(int c2=0;c2<5;c2++){
                                multi[c][c2]= resul;
                                resul=0;
                            }
                        }
                        j++;
                        if(j==4){
                            i++; 
                        }
                    }
                }
            } 
        }
    }

    public void Imprimir() {

        System.out.println("             [ RESULDATO DE LA SUMA ]              ");
        for (int c = 0; c < 5; c++) {
            for (int c2 = 0; c2 < 5; c2++) {
                System.out.print("[" + multi[c][c2] + "]");
            }
            System.out.println("");
        }
//
//        System.out.println("             [ RESULDATO DE LA RESTA ]              ");
//        for (int i = 0; i < 5; i++) {
//            for (int j = 0; j < 5; j++) {
//                System.out.print("[" + resta[i][j] + "]");
//            }
//            System.out.println("");
//
//        }
    }




    public static void main(String[] args) {

        matriz matri = new matriz();
        matri.Datos();
        matri.sumaYresta();
        matri.Imprimir();

    }

}

它应该打印相应的结果,但它却打印了“0” 我不确定我的代码的哪一部分失败了。有人有想法吗? 谢谢:)

我猜你想在 "Multiplication" 内进行乘法运算,所以我将其更改为:

public void multiplication(){
    for (int cm = 0; cm < 5; cm++) {
        for (int cn = 0; cn < 5; cn++) {
            int result = 0;
            for (int i = 0; i < 5; i++) {
                result += this.matriz1[cm][i] * this.matriz2[i][cn];
            }
            this.multi[cm][cn] = result;
        }
    }
}

您还必须在 main 方法中调用它,因此在打印结果之前添加:

matri.multiplicacion();

当你说它适用于学校时,我建议你看看你的代码风格,比如命名约定和最重要的英文变量名和注释。 (除非你的老师另有说明,否则请忽略我刚刚说的话:)

它使您的代码更加专业。

解决方案也非常具体,您可能会为可变矩阵大小做一些不同的事情。