6-2 编写Matrix类,使用二维数组实现矩阵,实现两个矩阵的乘法。 (30分)

本文介绍如何在Java中创建一个Matrix类,利用二维数组实现矩阵,并实现两个矩阵的乘法功能。Matrix类包含row和column属性,以及用于输入矩阵数据的inputMatrix方法和计算矩阵乘法的multiply方法。对于矩阵乘法规则,一个m×n矩阵乘以一个n×p矩阵得到m×p矩阵。文章探讨了成员变量的static修饰符的区别,帮助理解对象成员和类成员的概念。

编写程序题, 根据要求编写一个Java类,补充到代码中。 定义Matrix(矩阵)类,使用二维数组实现矩阵,实现两个矩阵的乘法。要求如下:

  1. 4个变量:row(行数),column(列数), matrix( int型二维数组),reader( Scanner对象)。

  2. 根据程序需求定义构造方法。

  3. inputMatrix方法:从键盘读入一个矩阵,读入行数和列数,创建矩阵,然后读入元素值方法。

  4. multiply方法:两个矩阵相乘,并返回乘积矩阵。

(两个矩阵的乘法:一个m×n的矩阵a(m,n)乘一个n×p的矩阵b(n,p),会得到一个m×p的矩阵c(m,p)。矩阵的行数和列数自定。)

public static Matrix inputMatrix()//从键盘读入一个矩阵,并返回矩阵
Matrix multiply(Matrix mat);   //两个矩阵相乘,并返回乘积矩阵。

import java.util.Scanner;
public class Main {	
	public static void main(String[] args) {	
		Matrix firstMat=Matrix.inputMatrix();		
		Matrix secondMat=Matrix.inputMatrix();		
		//display(firstMat.matrix);	display(secondMat.matrix);			
		
		Matrix productMat=firstMat.multiply(secondMat);
		display(productMat.matrix);		
	}	
	
	//display方法:打印二维数组元素到屏幕
	public static void display(int[][] array){
		for(int i=0; i<array.length; i++){
			for(int j=0; j<array[i].length; j++){
				if(j==array[i].length-1) {
					System.out.println(array[i][j]);
				}
				else {
					System.out.print(array[i][j]+" ");
				}
			}
		}
	}
}

/* 请在这里填写答案 */

class Matrix
{
    int row, column; 
    int[][] matrix;//int a[][];都可
    static Scanner reader = new Scanner(System.in);//why
    public static Matrix inputMatrix()//从键盘读入一个矩阵,并返回矩阵
    {
        int i, j;
        Matrix a = new Matrix();
        
        a.row = reader.nextInt();
        a.column = reader.nextInt();
        
        a.matrix = new int[a.row][a.column];//
        
        for(i = 0 ; i < a.row; i ++)
        {
            for( j = 0 ; j < a.column ; j ++)
            {
                a.matrix[i][j] = reader.nextInt();
            }
        }
        return a;
    }
    public Matrix multiply(Matrix mat)   //两个矩阵相乘,并返回乘积矩阵。
    {
        int i, j, k;
        Matrix c = new Matrix();
        c.row = this.matrix.length;
        c.column = mat.matrix[0].length;
        c.matrix = new int[c.row][c.column];
        
        for ( i = 0; i < c.row; i ++ )
        {
            for ( j = 0; j < c.column; j ++ )
            {
                for( k = 0; k < mat.matrix.length; k ++)
                {
                    c.matrix[i][j] += this.matrix[i][k] * mat.matrix[k][j];
                }
            }
        }
        return c;
    }
}
public  Matrix multiply(Matrix mat)  //两个矩阵相乘,并返回乘积矩阵。这里用public static就会答案错误

查阅资料知,
不加static修饰的成员是对象成员,归每个对象所有。

加static修饰的成员是类成员,可以由一个类直接调用,为所有对象共有。

但是还是不太明白
求大神指点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值