用Java写矩阵的加法和乘法

矩阵的加法和乘法代码如下:

package testthree;
import java.util.*;
public class threee {
	
	//矩阵的加法
	public static void matrixAdd()
	{
		Scanner reader = new Scanner(System.in);
		
		//矩阵的加法
		int [][]A;
		int [][]B;
		int [][]C;
		int x,y;  //行数为 x,列数为 y;
		System.out.println("请输入被加矩阵和加矩阵的行数和列数:");
		x = reader.nextInt();
		y = reader.nextInt(); 
		A = new int [x][y];
		B = new int [x][y];
		C = new int [x][y];
		System.out.println("创建空矩阵成功!");
		//输入 A矩阵的值
		System.out.println("请输入 A矩阵 的值:");
		for(int i = 0; i < x; i++)
		{
			for(int j = 0; j < y; j++)
			{
				A[i][j] = reader.nextInt();
			}
		}
		//输入 B矩阵的值
		System.out.println("请输入 B矩阵 的值:");
		for(int i = 0; i < x; i++)
		{
			for(int j = 0; j < y; j++)
			{
				B[i][j] = reader.nextInt();
			}
		}
		//进行相加
		for(int i = 0; i < x; i++)
		{
			for(int j = 0; j < y; j++)
			{
				C[i][j] = A[i][j] + B[i][j];
			}
		}
		//输出相加结果
		System.out.println("以下是 A和B相加得到的 C矩阵的值:");
		for(int i = 0; i < x; i++)
		{
			for(int j = 0; j < y; j++)
			{
				System.out.print(C[i][j] + " ");
			}
			System.out.println();
		}
	}
	
	//矩阵的乘法
	public static void matrixMultiply()
	{
		Scanner reader = new Scanner(System.in);
		
		//矩阵的乘法
		int [][]A;
		int [][]B;
		int [][]C;
		int x1,y1;  //A矩阵的 行数为 x1,列数为 y1;
		int x2,y2;  //B矩阵的 行数为 x2,列数为 y2;
		int sum = 0,k = 0,p; //矩阵相乘用到的中间数
		//输入行列数
		System.out.println("请输入被乘矩阵和乘矩阵的行数和列数:");
		x1 = reader.nextInt();
		y1 = reader.nextInt(); 
		x2 = reader.nextInt();
		y2 = reader.nextInt(); 
		//判断两矩阵是否能相乘
		if(y1 == x2)
		{
			A = new int [x1][y1];
			B = new int [x2][y2];
			C = new int [x1][y2];
			System.out.println("创建空矩阵成功!");
			//输入A矩阵
			System.out.println("请输入 A矩阵:");
			for(int i = 0;i < x1;i++)
				for(int j = 0;j < y1;j++)
				{
					A[i][j] = reader.nextInt();
				}
			//输入B矩阵
			System.out.println("请输入 B矩阵:");
			for(int i = 0;i < x2;i++)
				for(int j = 0;j < y2;j++)
				{
					B[i][j] = reader.nextInt();
				}
			//开始进行相乘
			for(int i = 0;i < x1;i++)
			{
				k = 0;p = 0;
				while(k < x1)
				{
					sum = 0;
					for(int j = 0;j < y2;j++)
					{
						sum += A[i][j] * B[j][k];
					}
					k++;
					C[i][p] = sum;
					p++;
				}
			}

			//输出结果
			System.out.println("以下是 A和B相乘得到的 C矩阵的值:");
			for(int i = 0; i < x1; i++)
			{
				for(int j = 0; j < y2; j++)
				{
					System.out.print(C[i][j] + " ");
				}
				System.out.println();
			}
		}
		else System.out.println("两个矩阵不能相乘!");
		}
		
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner reader = new Scanner(System.in);
		//菜单式引导访问
		int flag = 1;
		while(flag != 0)
		{
			System.out.println("\t|-----矩阵的加法与乘法-----|");
			System.out.println("\t|                         |");
			System.out.println("\t|      1-矩阵的加法        |");
			System.out.println("\t|      2-矩阵的乘法        |");
			System.out.println("\t|      0-程序的退出        |");
			System.out.println("\t|-------------------------|");
			System.out.println("\t|    请输入要进行的操作    |");
		
		if((flag = reader.nextInt()) != 0)
		{
			switch(flag)
			{
			case 1:
			{
				matrixAdd();
				break;
			}
			case 2:
			{
				matrixMultiply();
				break;
			}
			default:
			{
				if(0 != flag)
					System.out.println("输入错误,请重新输入!");
				break;
			}
			}
		}
		}
		//非菜单式访问
//		System.out.println("此程序是用来求两个矩阵的加法或乘法的,输入 1 为加法,输入 2 为乘法");
//		System.out.print("请输入你所需要的操作:");
//		flag = reader.nextInt();
//		if(flag == 1) matrixAdd();
//		if(flag == 2) matrixMultiply();
//		else System.out.println("输入操作错误!");
		System.out.println("该程序结束,感谢使用!");
	}
}
  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值