java程序——编程一个计算矩阵乘法的程序

先上代码

package MatrixCalculate;
import java.util.Scanner;
public class Matrix {
	private int length1=10,length2=10;//length1、length2分别表示行列
	private int [][]matrix=new int [length1][length2];//最多支持10*10的矩阵
	Scanner scan = new Scanner(System.in);//支持输入
	public Matrix(int length1,int length2) {
		this.length1=length1;
		this.length2=length2;
	}//构造方法重载
	public Matrix() {
	}//构造方法
	public void InputLength() {
		System.out.println("输入你需要计算的矩阵行列数");
		length1=scan.nextInt();
		length2=scan.nextInt();//调用输入方法
	}
	public  void InputMatrix() {
		System.out.println("输入你需要计算的矩阵");
		for(int i=0;i<length1;i++) {
			for(int k=0;k<length2;k++) {
				matrix[i][k]=scan.nextInt();
			}
    	}
	}//输入矩阵方法
	public  void OutputMatrix() {
		for(int i=0;i<length1;i++) {
			for(int k=0;k<length2;k++) {
				System.out.print(matrix[i][k]+" ");
			}
			System.out.println();
    	}
	}//输出矩阵方法
	//计算矩阵
	public Matrix CalculateMatrix(Matrix m1) {//参数列表可以接收一个矩阵对象,调用方法的对象矩阵与参数列表接收的对象矩阵相乘
			Matrix MATRIX=new Matrix(this.length1,m1.length2);//创建一个新对象存放结果矩阵,并返回矩阵对象
			for(int i=0;i<this.length1;i++) {
				for(int j=0;j<m1.length2;j++) {
					for(int k=0;k<m1.length2;k++) {
						MATRIX.matrix[i][j]+=this.matrix[i][k]*m1.matrix[k][j];
					}
				}
			}
			return MATRIX;
	}//满足矩阵相乘的要求后算矩阵乘法
	public int ShowLength1() {
		return this.length1;
	}
	public int ShowLength2() {
		return this.length2;
	}//为外部提供应该获l1\l2的接口
	public static void main(String[] args) {
		Matrix matrix1=new Matrix();
		Matrix matrix2=new Matrix();
		matrix1.InputLength();
		matrix2.InputLength();
		matrix1.InputMatrix();
		matrix2.InputMatrix();
		if(matrix1.ShowLength2()==matrix2.ShowLength1()) {
			Matrix multmatrix=new Matrix(matrix1.ShowLength1(),matrix2.ShowLength2());
			multmatrix=matrix1.CalculateMatrix(matrix2);
			multmatrix.OutputMatrix();
		}
	}
}

遇到了以下问题:

  1. 代码没有报错却无法运行。
    查找问题:main方法没有static修饰。
    解决问题:在main方法前添加static。
    错误分析:static表示静态方法,可以脱离类而实现,也就是说可以没有一个类的实例也能执行这个static方法,类似于一个全局方法。因此,static方法中的代码必须是可以单独拿出来执行的,如果要执行这个类中的非static方法,必须先实现一个这个类的实例。(查询CSDN大佬的解释获得关于main方法需加staticd原因
  2. 有static修饰的方法内的数据有报错消息。大概意思是:无法对非静态变量进行静态引用。
    查找问题:static修饰的方法内有对非静态变量的引用。
    解决问题:去掉方法前的static。
    错误分析:一个方法用static修饰,便是静态方法或类方法。静态方法不属于特定对象。由于static方法在装载class时首先完成,比构造方法早,此时非static属性和方法还没有完成初始化。(查询CSDN大佬的解释获得关于static的相关知识
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值