矩阵简单计算代码
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;
}
}