📜  二维矩阵乘法 - Java 代码示例

📅  最后修改于: 2022-03-11 14:52:49.206000             🧑  作者: Mango

代码示例1
import java.util.Arrays;
import java.util.Scanner;
public class Matrix {

    private static int counter =0;
    private static Scanner scanner = new Scanner(System.in);
    private int rawForArr1 =0 , columnForArr1=0, rawForArr2=0, ColumnForArr2=0;

    public Matrix(){
    }

    public Matrix(int rawForArr1, int columnForArr1, int rawForArr2, int columnForArr2) {
        this.rawForArr1 = rawForArr1;
        this.columnForArr1 = columnForArr1;
        this.rawForArr2 = rawForArr2;
        ColumnForArr2 = columnForArr2;
    }

    public void sizeOfRawsAndColumns(int r1, int c1, int r2, int c2){
        System.out.println("Enter numbers of raws for array#1");
        r1=scanner.nextInt();
        this.rawForArr1 =r1;
        System.out.println("Enter numbers of columns for array#1");
        c1=scanner.nextInt();
        this.columnForArr1=c1;
        System.out.println("Enter numbers of raws for array#2");
        r2=scanner.nextInt();
        this.rawForArr2 = r2;
        System.out.println("Enter numbers of columns for array#2");
        c2=scanner.nextInt();
        this.ColumnForArr2 = c2;
        checkIfMatrixIsValid(c1,r2,r1,c2);
    }
    public static void printValue(int[][] arr)
    {
                System.out.print(Arrays.deepToString(arr));
    }

    public static void checkIfMatrixIsValid(int c1,int r2,int r1, int c2)
    {
        while(c1 != r2)
        {
            System.out.println("The columns in the left array is not equal to the raw's in the right"+"\n"+
                    "array enter other values"+"\n"+
                    "enter a value and it will be assigned for valid Matrix");
            Scanner scanner = new Scanner(System.in);
            c1 = scanner.nextInt();
            r2 = c1;
        }
        int [][] firstArr = initilizeMatrix(r1,c1);
        int [][] secondArr = initilizeMatrix(r2,c2);
        EnterElements(firstArr);
        EnterElements(secondArr);
        int[][] multplied =multiplieMatrix(firstArr,secondArr);
        printValue(multplied);



    }

    public static int [][] initilizeMatrix(int n , int m)
    {

        int [][] newMatrix = new int[m][n];
        return  newMatrix;

    }

    public static int [][] multiplieMatrix(int [][] leftArr,int[][] rightArr){
        int m = leftArr[0].length;
        int n = rightArr.length;
        int [][] sumOfMultiplie = new int[m][n];
        int i=0,j=0,k=0;
        int sum = 0 ;
        for( i = 0 ; i < leftArr.length ; ++i)
        {
            for(j = 0 ; j < rightArr.length ; ++j)
            {
                for(k = 0 ; k < rightArr[0].length ; ++k)
                {
                    sum+= leftArr[i][k]*rightArr[k][j];
                }
                sumOfMultiplie[i][j]=sum ;
                sum=0;
            }
        }
        return sumOfMultiplie ;
    }

    public static int[][] EnterElements(int[][] arr)
    {

        ++counter;
        if(counter==1){
            System.out.println("Enter the elements for the left array"+'\n');
        }else{
            System.out.println("Enter the elements for the right array");
        }

        for(int i = 0 ; i < arr.length ; ++i)
        {
            for(int j = 0 ; j