您的位置:首页 > 编程语言 > Java开发

JAVA自学之每日一题(四)

2016-07-02 15:02 441 查看
题目要求:不定大小的矩阵乘法运算

package 矩阵相乘;

import java.util.Scanner;

public class MatrixMultiplication
{

public static void main(String[] args)
{
Scanner input = new Scanner(System.in);

int size_row_first, size_col_first;// 第一个矩阵的大小
int size_row_second, size_col_second;// 第二个矩阵的大小

System.out.print("请输入第一个矩阵的大小:");
size_row_first = input.nextInt();
size_col_first = input.nextInt();

System.out.print("请输入第二个矩阵的大小:");
size_row_second = input.nextInt();
size_col_second = input.nextInt();

if (size_col_first != size_row_second)// 检测矩阵是否合法
{
System.out.println("矩阵不合法");
}

double[][] first = new double[size_row_first][size_col_first];// 创建第一个矩阵
double[][] second = new double[size_row_second][size_col_second];// 创建第二个矩阵
double[][] result = new double[size_row_first][size_col_second];// 创建结果矩阵

// 调用输入函数
System.out.println("请输入第一个矩阵:");
input(first, size_row_first, size_col_first);
System.out.println("请输入第二个矩阵:");
input(second, size_row_second, size_col_second);

// 调用乘法计算函数
result = multiplyMatrix(first, second, size_row_first, size_col_second,size_col_first);

// 调用输出函数
System.out.println("计算结果为:");
output(first, size_row_first, size_col_first);
System.out.println("×");
output(second, size_row_second, size_col_second);
System.out.println("=");
output(result, size_row_first, size_col_second);

}

public static void input(double[][] a, int row, int col)// 输入函数
{
Scanner input=new Scanner(System.in);
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
a[i][j]=input.nextDouble();
}
}
}

public static void output(double[][] a, int row, int col)// 输出函数
{
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
System.out.printf("%4.2f",a[i][j]);
System.out.print("   ");
}
System.out.print('\n');
}
}

public static double[][] multiplyMatrix(double[][] a, double[][] b,int row, int col, int same_size)// 乘法计算函数
{
double[][] c = new double[row][col];
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
double temp = 0;
for (int k = 0; k < same_size; k++)
temp = temp + a[i][k] * b[k][i];
c[i][j] = temp;
}
}
return c;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java