package shiyan2;
import java.util.Scanner;
public class shiyan01{
public static void main(String [] args){
@SuppressWarnings("resource")
Scanner input = new Scanner(System.in);
System.out.println("请输入矩阵A的行数m"); //矩阵A的行数
int m = input.nextInt();
System.out.println("请输入矩阵A的列数n"); //矩阵A的列数
int n = input.nextInt();
System.out.println("请按顺序输入矩阵A的元素,用空格隔开同行元素,用回车换行");
int a[][] = new int[m][n];
for (int i=0;i<m;i++)
for (int j=0;j<n;j++)
a[i][j] = input.nextInt();
System.out.println("请输入矩阵B的行数p"); //矩阵B的行数
int p = input.nextInt();
System.out.println("请输入矩阵B的列数q"); //矩阵B的列数
int q = input.nextInt();
System.out.println("请按顺序输入矩阵B的元素,用空格隔开同行元素,用回车换行");
int b[][] = new int[p][q];
for (int i=0;i<p;i++) //读取矩阵B的各个元素
for (int j=0;j<q;j++)
b[i][j] = input.nextInt();
System.out.println("请输入要执行的矩阵计算(1:A+B, 2:A-B, 3:A*B, 4:转置,5:求逆,6:旋转反射)");
int s = input.nextInt(); //s控制采取哪种运算
System.out.println("矩阵A:"); //输出矩阵A和矩阵B
print(a);
System.out.println("矩阵B:");
print(b);
switch(s) { //根据s调用运算方法
case 1 :
System.out.println("您的矩阵加法计算结果为:");
print(add(a, b));
break;
case 2 :
System.out.println("您的矩阵减法计算结果为:");
print(sub(a, b));
break;
case 3 :
System.out.println("您的矩阵乘法计算结果为:");
print(mul(a, b));
break;
case 4:
System.out.println("您的矩阵转置计算结果为:");
print(zhuanzhi(a, b));
break;
default: System.out.println("选择错误");
}
}
public static void print(int [][] c){ //printMatrix方法用于输出矩阵
for(int i=0; i<c.length; i++){
for(int j=0; j<c[0].length; j++){
System.out.print(c[i][j]);
System.out.print(" ");
}
System.out.println();
}
System.out.println();
}
public static int [][] add(int [][] a, int [][] b){ //add方法实现矩阵加法运算
int c[][] = new int[a.length][a[0].length];
if (a.length!=b.length||a[0].length!=b[0].length)
{System.out.println("您输入的两个矩阵行列不匹配,无法完成加法运算!");
return c;}
else{
for(int i = 0 ; i< a.length ; i++)
for(int j = 0 ; j < a[0].length ; j++){
c[i][j] = a[i][j] + b[i][j];
}
return c;
}
}
public static int [][] sub(int [][] a, int [][] b){ //sub方法实现矩阵减法运算
int c[][] = new int[a.length][a[0].length];
if (a.length!=b.length||a[0].length!=b[0].length)
{System.out.println("您输入的两个矩阵行列不匹配,无法完成减法运算!");
return c;}
else{
for(int i = 0 ; i< a.length ; i++)
for(int j = 0 ; j < a[0].length ; j++){
c[i][j] = a[i][j] - b[i][j];
}
return c;
}
}
public static int [][] mul(int [][] a, int [][] b){ //mul方法实现矩阵乘法运算
int c[][] = new int[a.length][b[0].length];
if (a[0].length!=b.length)
{System.out.println("您输入的两个矩阵行列不匹配,无法完成乘法运算!");
return c;}
else{
for(int i = 0 ; i< a.length ; i++)
for(int j = 0 ; j < b[0].length ; j++){
for(int k = 0 ; k < a[0].length ; k++)
c[i][j] += a[i][k] * b[k][j] ;
}
return c;
}
}
public static int [][] zhuanzhi(int [][] a, int [][] b){ //zhuanzhi方法实现矩阵转置运算
int c[][] = new int[a.length][b[0].length];
if (a[0].length!=b.length)
{System.out.println("您输入的两个矩阵行列不匹配,无法完成转置");
return c;}
else{
for(int i = 0 ; i< a.length ; i++)
{
for(int k = 0 ; k < a[0].length ; k++)
c[i][k] = a[k][i] ;
}
return c;
}
}
}