测试类:
package matrix; public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub long_weight m = new long_weight(); m.get_all(); long_weight m1 = new long_weight(3, 5); m1.get_all(); System.out.println(); System.out.println("改变矩阵中的值之后为:"); m1.set_number(2, 2, 7);// 改变矩阵中某一个元素的值 m1.get_all(); System.out.println(); long_weight m2 = new long_weight(2, 2); m2.set_number(0, 0, 1); m2.set_number(0, 1, 1); m2.set_number(1, 0, 2); m2.set_number(1, 1, 0); System.out.println("修改后矩阵的值为:"); m2.get_all(); System.out.println(); long_weight m3 = new long_weight(2, 3); m3.set_number(0, 0, 0); m3.set_number(0, 1, 2); m3.set_number(0, 2, 3); m3.set_number(1, 0, 1); m3.set_number(1, 1, 1); m3.set_number(1, 2, 2); System.out.println("修改后矩阵的值为:"); m3.get_all(); System.out.println(); long_weight m5 = new long_weight(2, 2); m5.set_number(0, 0, 1); m5.set_number(0, 1, 1); m5.set_number(1, 0, 2); m5.set_number(1, 1, 0); long_weight m4 = long_weight.add(m2, m5); System.out.println("两个矩阵相加后矩阵的值为:"); m4.get_all(); System.out.println(); long_weight m6 = long_weight.multiplication(m2, m3); System.out.println("两个矩阵相乘后矩阵的值为:"); m6.get_all(); System.out.println(); System.out.println("矩阵两个元素位置交换后为:"); m5.change(0, 1, 1, 0); m5.get_all(); } }
矩形类:
package matrix; class long_weight { int line, column; int[][] a; long_weight() { line = 0; column = 0; } long_weight(int line, int column) { this.line = line; this.column = column; int i, j; a = new int[line][column]; for (i = 0; i < line; i++) for (j = 0; j < column; j++) // 把矩阵元素初始化为零 a[i][j] = 0; } // 位置变换 void change(int line, int column, int change1, int change2) { int change; change = a[line][column]; a[line][column] = a[change1][change2]; a[change1][change2] = change; } // 给任意元素置值 void set_number(int line, int column, int number) { a[line][column] = number; } // 得到所有的矩阵元素 void get_all() { if (line == 0 && column == 0) { System.out.println("该矩阵不存在!"); } else { for (int i = 0; i < line; i++) { for (int j = 0; j < column; j++) System.out.print(a[i][j] + " "); System.out.println(); } } } // 矩阵元素相加 static long_weight add(long_weight s, long_weight a) { long_weight copy = new long_weight(s.line, s.column); for (int i = 0; i < s.line; i++) for (int j = 0; j < s.column; j++) copy.a[i][j] = s.a[i][j] + a.a[i][j]; return copy; } // 矩阵元素相乘 static long_weight multiplication(long_weight s, long_weight b) { int sum = 0; if (s.column != b.line) { System.out.println("因为a数组与b数组不同,所以不能相乘!"); // System.out.println("因为a数组第"+i+"行与b数组第i行元素个数不同,所以不能相乘!"); return null; } // 2.得到C矩阵的行数和列数,以产生C矩阵 long_weight c = new long_weight(s.line, b.column); // 3.输出结果矩阵C的值 System.out.println("按二维方式输出C矩阵:"); for (int i = 0; i < s.line; ++i) { for (int j = 0; j < b.column; ++j) { sum = 0; for (int m = 0; m < s.column; ++m) { // for(int k = 0;m <a[0].length;++m) sum = sum + s.a[i][m] * b.a[m][j]; // System.out.print(c[i][j]+" "); } c.a[i][j] = sum; System.out.print(c.a[i][j] + " "); } System.out.println(); } System.out.println(); return c; } }
运行结果: