JAVA--第五周实验--任务6--封装一类矩阵对象,完成矩阵中数据的位置变换、加法、乘法的功能

来源:互联网 发布:江西淘宝大学电话 编辑:程序博客网 时间:2024/06/15 10:29

测试类:

package matrix;public class Test {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stublong_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;}}


 

运行结果: