问题如下
我采用的是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);
}
}
结果