矩阵之转置、加减、乘除计算代码

矩阵简单计算代码

package matrix;
import java.util.*;
import java.util.Scanner;
public class Calculate {
	// Main函数测试
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入所要创建第一个矩阵的行数和列数(如:3 3):");
		int  x = input.nextInt();                //输入行数
		int  y = input.nextInt();                //输入列数
		int[][]list1=createMatrix(x,y);          //创建矩阵list1,传递矩阵1的行数x和列数y;
		System.out.println("请输入所要创建第二个矩阵的行数和列数(如:3 3):");
		x = input.nextInt();                        //输入行数
		y = input.nextInt();                        //输入列数
		int[][]list2=createMatrix(x,y);             //创建矩阵list2,传递矩阵2的行数x和列数y;
		//!!!注意:方法是可以重复调用的代码段。故此可以再次创建矩阵2调用createMatrix方法。
		int[][]list3=addMatrix(list1,list2);        //矩阵相加
		int[][]list4=multiplyMatrix(list1,list2);   //矩阵相乘
		int[][]list5=substractMatrix(list1,list2);  //矩阵相减
		int[][]list6=zhuanzhiMatrix(list1);         //矩阵转置
		int[][]list7=zhuanzhiMatrix(list2);         //矩阵转置
	}
    //创建矩阵
	public static int[][] createMatrix(int x,int y) {    //   注意!!!  括号内含义:有参方法  传递参数
		Scanner input=new Scanner(System.in);      //输入函数
		System.out.println("请输入"+x+"行"+y+"列的矩阵数据(行优先):");
		int[][] array=new int[x][y];               // 创建整数型数组
		for(int i=0;i<array.length;i++) {
			for(int j=0;j<array.length;j++) {
				array[i][j]=input.nextInt();       // for循环嵌套输入矩阵
			}
		}
		return array;

	}
//矩阵输出
	public static void outputMatrix(int[][] list) {
		for(int i=0;i<list.length;i++) {
			for(int j=0;j<list.length;j++) {
				System.out.println(list[i][j]+" ");  // 利用列表输出矩阵
			}
		}
		System.out.println();
	}
//矩阵求和
	public static int[][] addMatrix(int[][] list1,int[][] list2){  //括号内是传递二维数组整数类型  以及参数名
		int[][] list3=new int[list1.length] [list1[0].length];     //list1.length 是列长度,list1[0].length是行长度
		if(list1.length!=list2.length||list1[0].length!=list2[0].length) {
			//if括号内是判断list1与list2的列数和行数是否相等
			System.out.println("行数或列数不同的矩阵不能相加!并将返回0:!!");
		}else {
			for(int i=0;i<list1.length;i++) {
				for(int j=0;j<list1[0].length;j++) {
					list3[i][j]=list1[i][j]+list2[i][j];
				}
				return list3;
			}
		}
		return list3;
	}
//矩阵相乘
	public static int[][] multiplyMatrix(int[][] list1,int[][] list2){
		int[][] list3=new int[list1.length][list2[0].length];
		if(list1.length!=list2[0].length||list1[0].length!=list2.length) {
			System.out.println("两矩阵不符合条件相乘!并返回0:!!");
		}else {
			for(int i=0;i<list1.length;i++) {
				for(int j=0;j<list2[0].length;j++) {
					for(int k=0;k<list2[0].length;k++) {
						list3[i][j] += list1[i][k]*list2[k][j];
					}
				}
			}
		}
		return list3;
	}
	
//矩阵相减
	public static int[][] substractMatrix(int[][]list1,int[][]list2){
		int[][]list5=new int[list1.length][list1[0].length];
		if(list1.length!=list2.length||list1[0].length!=list2[0].length) {
			System.out.println("行数或列数不同的矩阵不能相加!并返回0:!!");
		}else {
			for(int i=0;i<list1[0].length;i++) {
				for(int j=0;j<list1[0].length;j++) {
					list5[i][j]=list1[i][j]-list2[i][j];
				}
			}
		}
		return list5;
	}
	
//矩阵转置
	public static int[][]  zhuanzhiMatrix(int[][]list){
		int[][] list6 =new int[list.length][list[0].length];
		for(int i=0;i<list.length;i++) {
			for(int j=0;j<list[0].length;j++) {
				list6[i][j]=list[j][i];
			}
		}
		return list6;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值