import java.util.Scanner;
class home {
private int[][] a;
private int[][] b;
private int x, y, x1, y1;
public void assignment() {
home r = new home();
Scanner reader = new Scanner(System.in);
System.out.println("请输入两个矩阵的行数和列数");
System.out.print("第一个矩阵行数为:");
x = reader.nextInt();
System.out.print("第一个矩阵列数为:");
y = reader.nextInt();
System.out.print("第二个矩阵行数为:");
x1 = reader.nextInt();
System.out.print("第二个矩阵列数为:");
y1 = reader.nextInt();
a = new int[x][y];
b = new int[x1][y1];
System.out.println("请输入第一个矩阵中的数据");
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
a[i][j] = reader.nextInt();
}
}
System.out.println("第一个矩阵为:");
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
System.out.print(a[i][j] + "\t");
}
System.out.println();
}
System.out.println("请输入第二个矩阵中的数据");
for (int i = 0; i < x1; i++) {
for (int j = 0; j < y1; j++) {
b[i][j] = reader.nextInt();
}
}
System.out.println("第二个矩阵为:");
for (int i = 0; i < x1; i++) {
for (int j = 0; j < y1; j++) {
System.out.print(b[i][j] + "\t");
}
System.out.println();
}
System.out.println("请选择对矩阵的运算:1加法,2减法,3转置,4乘积");
int operation = reader.nextInt();
for (; operation != 1 && operation != 2 && operation != 3 && operation != 4; ) {
System.out.println("输入错误,请重新输入");
operation = reader.nextInt();
}
if (operation == 1) {
System.out.println("两个矩阵相加为:");
int[][] c = r.add(a,b,x,y,x1,y1);
if (c != null) {
r.print(c, x, y);
}
} else if (operation == 2) {
System.out.println("两个矩阵相减为:");
int[][] c = r.jian(a,b,x,y,x1,y1);
if (c != null) {
r.print(c, x, y);
}
} else if (operation == 3) {
int[][] c = r.turn(a, x, y);
int[][] d = r.turn(b, x1, y1);
System.out.println("a矩阵转置为:");
r.print(c, x, y);
System.out.println("b矩阵转置为:");
r.print(d, x, y);
} else {
System.out.println("两个矩阵相乘为:");
int[][] c = r.cheng(a,b,x,y,x1,y1);
if (c != null) {
r.print(c, x, y);
}
}
}
private int[][] add(int [][]a,int [][]b,int x,int y,int x1,int y1) {
if (x == x1 && y == y1) {
int [][]c = new int[x][y];
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
c[i][j] = a[i][j] + b[i][j];
}
}
return c;
} else {
System.out.println("两个数组不能相加,因为a b不是同型数组");
return null;
}
}
private int[][] jian(int [][]a,int [][]b,int x,int y,int x1,int y1) {
if (x == x1 && y == y1) {
int[][] c = new int[x][y];
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
c[i][j] = a[i][j] - b[i][j];
}
}
return c;
} else {
System.out.println("两个数组不能相减,因为a b不是同型数组");
return null;
}
}
private int[][] turn(int[][] a, int x, int y) {
int[][] c = new int[x][y];
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
c[j][i] = a[i][j];
}
}
return c;
}
private int[][] cheng(int [][]a,int [][]b,int x,int y,int x1,int y1) {
if (y==x1) {
int[][] c = new int[x][y1];
for (int i = 0; i < x; i++) {
for (int j = 0; j < y1; j++) {
int sum = 0;
for (int k = 0; k < y; k++) {
sum += a[i][k] * b[k][j];
}
c[i][j] = sum;
}
}
return c;
} else {
System.out.println("两个数组不能相乘,因为a数组的列数不等于b数组的行数");
return null;
}
}
private void print(int [][]c, int x, int y) {
System.out.println("x:"+c.length);
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
System.out.print(c[i][j] + "\t");
}
System.out.println();
}
}
}
public class Test {
public static void main(String[] args) {
home r = new home();
r.assignment();
}
}
你可以把代码贴出来