现在的位置: 首页 > 综合 > 正文

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

2013年01月25日 ⁄ 综合 ⁄ 共 2619字 ⁄ 字号 评论关闭

测试类:

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;
	}

}

 

运行结果:

抱歉!评论已关闭.