Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与2矩阵相乘时的打印问题_Java_Matrix_Matrix Multiplication - Fatal编程技术网

Java 与2矩阵相乘时的打印问题

Java 与2矩阵相乘时的打印问题,java,matrix,matrix-multiplication,Java,Matrix,Matrix Multiplication,我试着对两个矩阵求和、减法和乘法,求和和和减法运算正确,但在进行乘法运算时,打印结果为0。对不起,西班牙语的变数,我必须用西班牙语交作业 package Segundo_Parcial; import java.util.Scanner; public class matriz { private Scanner teclado; private int[][] matriz1; private int[][] matriz2; private int[][

我试着对两个矩阵求和、减法和乘法,求和和和减法运算正确,但在进行乘法运算时,打印结果为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();

    }

}

package Segundo\u Parcial;
导入java.util.Scanner;
公共类矩阵{
私人扫描仪;
私有int[][]矩阵1;
私有int[][]矩阵2;
私有int[][]suma;
私人int[][]餐厅;
私有int[][]多;
私人浮动【】【】divi;
公共无效Datos(){
teclado=新扫描仪(System.in);
matriz1=新整数[5][5];
matriz2=新整数[5][5];
suma=新整数[5][5];
resta=新整数[5][5];
multi=新整数[5][5];
divi=新浮动[5][5];
System.out.println(“[Matriz 1]”);
对于(int i=0;i<5;i++){
对于(int j=0;j<5;j++){
系统输出打印项(“位置编号[“+i+”][“+j+”]:”;
matriz1[i][j]=teclado.nextInt();
}
}
System.out.println(“[Matriz 2]”);
对于(int i=0;i<5;i++){
对于(int j=0;j<5;j++){
系统输出打印项(“位置编号[“+i+”][“+j+”]:”;
matriz2[i][j]=teclado.nextInt();
}
}
}
公共空间sumaYresta(){
对于(int i=0;i<5;i++){
对于(int j=0;j<5;j++){
suma[i][j]=matriz1[i][j]+matriz2[i][j];
}
}
对于(int i=0;i<5;i++){
对于(int j=0;j<5;j++){
resta[i][j]=matriz1[i][j]-matriz2[i][j];
}
}
}
公共无效乘法(){
int x=0,jd=0,id=0,i=0,j=0,resu=0;

对于(i=0;i我猜您希望乘法发生在“乘法”中,因此我将其更改为:

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;
        }
    }
}
当你说这是为了学校的时候,我建议你看看你的代码风格,比如命名惯例和最重要的英语变量名和注释。(除非你的老师告诉你,否则不要理会我刚才说的:)

它使你的代码更加专业

此外,解决方案非常具体,您可能会对可变矩阵大小做出一些不同的选择

matri.multiplicacion();