美文网首页
java矩阵类,矩阵的乘法

java矩阵类,矩阵的乘法

作者: 知识学者 | 来源:发表于2018-07-30 22:15 被阅读33次

    问题如下

    矩阵成积.jpg

    我采用的是3重循环,先计算的列的结果,应该还可以先计算行的结果,然后求出矩阵的乘法。没有过多的技巧,就是循环的使用。

    相关的code

    package day20180728;
    
    import java.util.Scanner;
    
    class Matrix{
        
        private int m,n;
        private int[][] arr;
        
        public Matrix(int m,int n)
        {
            this.m=m;
            this.n=n;   
            arr=new int[m][n];
        }
        
        
        public void setMat()
        {
            /*
             * Scanner(InputStream source) 
              构造一个新的 Scanner,它生成的值是从指定的输入流扫描的
             */
            Scanner sn=new Scanner(System.in);
            int count=0;
            for(int i=0; i<m; i++)
            
            for(int j=0; j<n; j++)
            {
                System.out.print("请输入矩阵中的数字:");
                arr[i][j]=sn.nextInt();
            }
            
        }
        
        public int[][] getArr()
        {
            return arr;
        }
        
        
        public void  display()
        {
            for(int i=0; i<m; i++)
            { 
            for(int j=0; j<n; j++)
            {
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
            }
            
            System.out.println("-----"+arr.length+"*"+arr[0].length);
        }
        
        
    
        
        public static int[][] chenfaMat(int[][] a,int[][] b)
        {
            if(a[0].length!=b.length)
                System.out.print("行列不相等不能计算");
            
            int[][] end=new int[a.length][b[0].length];
            
            int num=0,i=0,j=0;
            
            int count=0;
            for(int c=0; c<b[0].length; c++)
            {
                
            
            for( i=0; i<a.length; i++)
            {
                num=0;
                
                for(j=0; j<b.length; j++)
                {
                    num+=a[i][j]*b[j][c];
                    System.out.println("-----"+"["+i+","+j+"] "+c+"/// "+num);
                }
               
                end[i][c]=num;
            }
            
            System.out.println("--跳出循环后的i,j---"+"["+i+","+j+"]"+c+"### ");
            
            
            }
            
            return end;
        }
        
    }
    
    
    
    public class MaxDem {
    
        
        public static void print(int[][] arr)
        {
            for(int i=0; i<arr.length; i++)
            { 
            for(int j=0; j<arr[0].length; j++)
            {
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
            }
            
            System.out.print("-----"+arr.length+arr[0].length);
            
        }
    
        public static void main(String[] args) {
            
            Matrix mx1=new Matrix(2,2);
            mx1.setMat();
            mx1.display();
            
            
            Matrix mx2=new Matrix(2,3);
            mx2.setMat();
            mx2.display();
            
        int[][] arry=Matrix.chenfaMat(mx1.getArr(), mx2.getArr());
        
        print(arry);
            
            
            
        
    
        }
    
    }
    
    

    结果

    矩阵的乘法.PNG

    相关文章

      网友评论

          本文标题:java矩阵类,矩阵的乘法

          本文链接:https://www.haomeiwen.com/subject/owuqvftx.html