初学java——两矩阵运算

对于两个矩阵之间的四个运算,加减乘和数乘

主函数

public class Juzhen {
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub
		int a[][]=jzsr();
		int b[][]=jzsr();
		//四个做运算的函数都放在Juzhen这个class里,所有要用Juzhen.xxx()
		Juzhen.jzsx(a, b);  
		Juzhen.jzjiafa(a, b);
		Juzhen.jzjianfa(a, b);
		Juzhen.jzcf(a, b);
    }
  • 矩阵的输入函数
public static int[][] jzsr()           
	{
		Scanner in= new Scanner(System.in);
		//new了一个叫in的对象,将system.in作为参数传给Scanner这个类
		//然后就可以用对象in里的成员变量nextLint()了
		int i;
		int j;
		
		System.out.println("输入矩阵的长和宽");
		int x[][]=new int [in.nextInt()][in.nextInt()];
		//在定义矩阵的行和列时直接用in.nextInt()来获取键盘输入
		//省去两个变量的定义
		
		System.out.println("输入矩阵");
		for(i=0;i<x.length;i++)        //x.length是矩阵x的行
		  for(j=0;j<x[0].length;j++)   //x[0].length是矩阵第1行的列
			x[i][j]=in.nextInt();
		return x;
	}
  • 矩阵的输出函数
public static void jzsc(int a[][])
	{
		int i;
		int j;
		
		for(i=0;i<a.length;i++)
		{
			for(j=0;j<a[0].length;j++)
				System.out.print(a[i][j]+" ");
			System.out.println(" ");
		}
	}
  • 矩阵的乘法函数
private static void jzcf(int a[][], int b[][]) 
	{
		int k;  //第一个矩阵的行
		int i;  //即是第一个矩阵的列,又是第二个矩阵的行
		int o;  //第二个矩阵的列
		int [][] c=new int [a.length][b[0].length];
		//定义一个矩阵c来存放a和b相乘的结果
		if(a[0].length==b.length)  //判断a和b能否相乘
		{ 
		    for(k=0;k<a.length;k++)
			   for(i=0;i<b[0].length;i++)
				  for(o=0;o<a[0].length;o++)
				  c[k][i]=c[k][i]+a[k][i]*b[i][o];
		
		    System.out.println("矩阵相乘得:");
		    Juzhen.jzsc(c);  //调用输出函数并将矩阵c的地址作为参数给它
		}
		else
			System.out.println("矩阵不可相乘!");
	}
	
  • 矩阵的数乘函数
private static void jzsx(int a[][], int b[][]) 
	{
		int i;
		int j;
		int [][] c=new int [a.length][a[0].length];
		
		if(a.length==b.length||a[0].length==b[0].length)
	    {
			for(i=0;i<a.length;i++)
			   for(j=0;j<a[0].length;j++)
				  c[i][j]=c[i][j]+a[i][j]*b[i][j];
			
			System.out.println("矩阵数乘得:");
		    Juzhen.jzsc(c);
	    }
		else
			System.out.println("矩阵不可数乘!");
	}
  • 矩阵的加法函数
private static void jzjianfa(int a[][], int b[][]) 
	{
		int i;
		int j;
		int [][] c=new int [a.length][a[0].length];
		
		if(a.length==b.length||a[0].length==b[0].length)
	    {
			for(i=0;i<a.length;i++)
			   for(j=0;j<a[0].length;j++)
				  c[i][j]=c[i][j]+a[i][j]+b[i][j];
			
			System.out.println("矩阵相加得:");
		    Juzhen.jzsc(c);
	    }
		else
			System.out.println("矩阵不可相加!");
	}
  • 矩阵的减法函数
private static void jzjiafa(int a[][], int b[][]) 
	{
		int i;
		int j;
		int [][] c=new int [a.length][a[0].length];
		
		if(a.length==b.length||a[0].length==b[0].length)
		{
		  for(i=0;i<a.length;i++)
			for(j=0;j<a[0].length;j++)
				c[i][j]=c[i][j]+a[i][j]-b[i][j];
		
		  System.out.println("矩阵相减得:");
		  Juzhen.jzsc(c);
		}
		else
			System.out.println("矩阵不可相减!");
	}
	}  //这个括号是class Juzhen{ }中的
  • eclipes测试
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值