使用二维数组实现Matrix(矩阵)。
定义Matrix(矩阵)类,要求如下:
a) 变量:matrix(int型二维数组),row(行数),column(列数);
b) 方法:实现两个矩阵的乘法,所有方法将返回操作后的结果矩阵。(两个矩阵的乘法:一个m×n的矩阵a(m,n)乘一个n×p的矩阵b(n,p),会得到一个m×p的矩阵c(m,p)。矩阵的行数和列数自定。)
c) 定义构造方法。编写主类,测试Matrix类。包括:构建对象,测试每一个方法,并将测试结果输出到屏幕上。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int m,n,q;
m=input.nextInt();
n=input.nextInt();
int a[][]=new int[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
a[i][j]=input.nextInt();
n=input.nextInt();
q=input.nextInt();
int b[][]=new int[n][q];
for(int i=0;i<n;i++)
for(int j=0;j<q;j++)
b[i][j]=input.nextInt();
int c[][]=new int[a.length][b[0].length];
jzmultiply (a ,b);
}
public static int[][] creatjz ()
{
Scanner scan=new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
int[][] jz = new int[a][b];
int i,j;
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
jz[i][j]=scan.nextInt();
}
}
return jz;
}
public static void jzmultiply (int[][] a ,int[][] b)
{
int[][] sum = new int [a.length][b[0].length];
int i, j, k;
for(i = 0; i < a.length; i++ )
{
for(j = 0; j < b[0].length; j++)
{
for(k = 0;k < b.length; k++)
{
sum[i][j] =sum[i][j] + a[i][k] * b[k][j];
}
}
}
printjz(sum,a.length,b[0].length);
}
public static void printjz(int[][] sum,int m,int q)
{
int i, j;
for( i=0; i<m; i++)
{
for( j=0; j<q; j++)
{
System.out.print(sum[i][j]+" ");
}//必须要带括弧啊,一句话也要带
System.out.println();
}
}
}
但是这里我把输入写成函数的话pta就过不了,但是eclipse里测试结果正确,求指点
public static void main(String[] args) {
int[][] a = creatjz();
int[][] b = creatjz();
jzmultiply(a ,b);
}
public static int[][] creatjz ()
{
Scanner scan=new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
int[][] jz = new int[a][b];
int i,j;
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
jz[i][j]=scan.nextInt();
}
}
return jz;
}
版权声明:本文为Catherinezxc原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。