/*
* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:用二维数组表示矩阵,实现矩阵乘法
* 作 者:薛广晨
* 完成日期:2011 年 09 月 18 日
* 版 本号:x1.0
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述: 用二维数组表示矩阵,实现矩阵乘法。
* 如C=A*B,要考虑矩阵相乘的规则,即A矩阵和B矩阵是任意的,
* C矩阵的产生是自动的(C的行数和列数要自动判断生成?怎样得到C矩阵的的行数和列数?)
* 程序输出:
* 程序头部的注释结束
*/
package xgc.com;
public class TestMatrixPlus {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] a={{1,4,5,6},{7,2,10,11},{8,9,12,3}};//自己定义矩阵
int[][] b={{1,4,5,6},{7,2,10,11},{8,9,12,3}};//自己定义矩阵
printMatrix(a,b);
}
static void printMatrix(int[][] a,int[][] b){
//1.要判断矩阵能否相乘,能相乘继续,不能相乘给出提示为什么不能相乘
//2.得到C矩阵的行数和列数,以产生C矩阵
int c[][] = new int[a.length][];
if(a.length == b.length )
{
for(int i = 0; i < a.length; i++)
{
c[i]= new int[a[i].length];
if(a[i].length != b[i].length)
{
System.out.println("两矩阵列数不同,不能相乘");
return;
}
}
for(int i = 0; i < a.length; i++)
{
for(int j = 0; j < a[i].length; j++)
{
c[i][j] = a[i][j] * b[i][j];
}
}
}else{
System.out.println("两矩阵行数不同,不能相乘");
return;
}
//3.输出结果矩阵C的值
for(int i = 0; i < c.length; i++)
{
for(int j = 0; j < c[i].length; j++)
{
System.out.print(c[i][j] + " ");
}
System.out.println();
}
}
}
运行结果: