JAVA--第四周实验--任务4--求矩阵元素相乘(编程思想)

 

/* (程序头部注释开始)
 * 程序的版权和版本声明部分
 * Copyright (c) 2011, 烟台大学计算机学院学生 
 * All rights reserved.
 * 文件名称:求矩阵元素相乘
 * 算法提示:(1)用二维数组表示矩阵,实现矩阵乘法。
 * 算法提示:(2)如C=A*B,要考虑矩阵相乘的规则,即A矩阵和B矩阵是任意的,
 * 算法提示:(3)C矩阵的产生是自动的(C的行数和列数要自动判断生成?怎样得到C矩阵的的行数和列数?)
 * 作 者: 雷恒鑫 
 * 完成日期: 2012 年 09 月 20 日
 * 版 本 号: V1.0 
 * 对任务及求解方法的描述部分
 * 输入描述:
 * 问题描述:
 * 程序输出:
 * 程序头部的注释结束
 */

public class Task_four {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[][] a={{1,1},{2,0}};//自己定义矩阵
		int[][] b={{0,2,3},{1,1,2}};//自己定义矩阵
		printMatrix(a,b);
	}
	static void printMatrix(int[][] a,int[][] b){
		//1.要判断矩阵能否相乘,能相乘继续,不能相乘给出提示为什么不能相乘
		int sum=0;
			for(int i = 0;i<a.length;++i)
			{
				if(a[i].length!=b.length)
				{
					System.out.println("因为a数组与b数组不同,所以不能相乘!");
					//System.out.println("因为a数组第"+i+"行与b数组第i行元素个数不同,所以不能相乘!");
					return;
				}
			}
		//2.得到C矩阵的行数和列数,以产生C矩阵
		int[][] c = new int[a.length][b[0].length];
		//3.输出结果矩阵C的值
		System.out.println("按二维方式输出C矩阵:");
		for(int i = 0;i <a.length;++i)
		{
			for(int j = 0;j <b[0].length;++j)
			{
				sum =0;
				for(int m = 0;m <a[0].length;++m)
				{
				//for(int k = 0;m <a[0].length;++m)
				sum = sum+a[i][m]*b[m][j];
				//System.out.print(c[i][j]+"  ");
				}
				c[i][j] = sum;
				System.out.print(c[i][j]+"  ");
			}
			System.out.println();
		}
		System.out.println();
		
	}
	
}

 

运行结果:

下面是错误的程序,大家不要看。

/* (程序头部注释开始)
 * 程序的版权和版本声明部分
 * Copyright (c) 2011, 烟台大学计算机学院学生 
 * All rights reserved.
 * 文件名称:求矩阵元素相乘
 * 算法提示:(1)用二维数组表示矩阵,实现矩阵乘法。
 * 算法提示:(2)如C=A*B,要考虑矩阵相乘的规则,即A矩阵和B矩阵是任意的,
 * 算法提示:(3)C矩阵的产生是自动的(C的行数和列数要自动判断生成?怎样得到C矩阵的的行数和列数?)
 * 作 者: 雷恒鑫 
 * 完成日期: 2012 年 09 月 20 日
 * 版 本 号: V1.0 
 * 对任务及求解方法的描述部分
 * 输入描述:
 * 问题描述:
 * 程序输出:
 
 * 程序头部的注释结束
 
 */

public class Task_two {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int[][] a={{11,4,5,6},{7,2,10,11},{8,9,12,3}};//自己定义矩阵
		int[][] b={{3,6,8,7},{5,6,7,8},{4,2,3,4}};//自己定义矩阵
		printMatrix(a,b);
	}
	static void printMatrix(int[][] a,int[][] b){
		//1.要判断矩阵能否相乘,能相乘继续,不能相乘给出提示为什么不能相乘
		if((a.length==b.length))
		{
			for(int i = 0;i<a.length;++i)
			{
				if(a[i].length!=b[i].length)
				{
					System.out.println("因为a数组第"+i+"行与b数组第i行元素个数不同,所以不能相乘!");
					return;
				}
			}
		}else{
			System.out.println("因为a数组与b数组列数不同,所以不能相乘!");
			return;
		}
		//2.得到C矩阵的行数和列数,以产生C矩阵
		int[][] c = new int[a.length][];
		//3.输出结果矩阵C的值
		System.out.println("按二维方式输出C矩阵:");
		for(int i = 0;i <a.length;++i)
		{
			for(int j = 0;j <a[i].length;++j)
			{
				c[i]= new int[a[i].length];
				c[i][j] = a[i][j]*b[i][j];
				System.out.print(c[i][j]+"  ");
			}
			System.out.println();
		}
		System.out.println();
	}



}


运行结果:

下面是关于矩阵乘法的一些链接:

百度百科:矩阵乘法

百度文库:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leihengxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值