用java怎么写矩阵乘法?

Python065

用java怎么写矩阵乘法?,第1张

import java.util.Scanner 

public class Matrix { 

public double[][] create() { 

Scanner sc = new Scanner(System.in)  

System.out.print("请输入矩阵的行高:"); 

int a = sc.nextInt()  

System.out.print("请输入矩阵的列宽:"); 

int b = sc.nextInt()  

double[][] x = new double[a][b]  

for(int i=0i&ltai++){ 

for(int j=0j&ltbj++){ 

System.out.print("请输入元素x["+i+"]["+j+"]的值:" ); 

x[i][j] = sc.nextDouble()  

return x  

public double[][] multiply(double[][] x,double[][] y){ 

double[][] result = null  

int a = x[0].length  

int b = y.length  

if(a != b){ 

System.out.println("输入的维数不匹配,不能进行运算"); 

}else{ 

int c = x.length  

int d = y[0].length  

result = new double[c][d]  

for(int i=0i&ltci++){ 

for(int j=0j&ltdj++){ 

double sum = 0  

for(int k=0k&ltak++){ 

sum += x[i][k]*y[k][j]  

result[i][j] = sum  

return result  

public void print(double[][] x){ 

System.out.println("矩阵为:"); 

for(int i=0i&ltx.lengthi++){ 

for(int j=0j&ltx[i].lengthj++){ 

System.out.print(x[i][j] + " ")  

System.out.println() 

测试类: 

public class TestMatrix { 

public static void main(String[] args) { 

Matrix m = new Matrix()  

//double[][] x = {{1,2},{3,2}}  

//double[][] y = {{1,2,1},{2,3,3}}  

System.out.println("创建第一个数组:") ; 

double[][] x = m.create()  

m.print(x) ; //用来验证输入的是否和你一样的,没啥作用 

System.out.println("创建第二个数组:"); 

double[][] y = m.create()  

m.print(y) ; //用来验证输入的是否和你一样的,没啥作用 

double[][] result = m.multiply(x, y)  

if(result == null){ 

return ; //如果输入的矩阵不能运算就不输出结果了。 

m.print(result)  

}

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。 Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

import java.util.Arrays

public class Test {

static int[][] matrix1

static int[][] matrix2

public static void main(String[] args) {

matrix1=new int[][]{{1,2,3,4},{2,3,4,5},{3,4,5,6},{4,5,6,7},{5,6,7,8},{6,7,8,9}}

matrix2=new int[][]{{9,8,7,6,5,4},{8,7,6,5,4,3},{7,6,5,4,3,2},{6,5,4,3,2,1}}

if(matrix1.length!=matrix2[0].length){//若无法相乘则退出

System.out.println("ivalid input")

System.exit(0)

}

int[][] r = new int[matrix1[0].length][matrix2.length]

for(int i=0i<r.length++i){

for(int j=0j<r[i].length++j){//每一个r[i][j]的运算:

r[i][j]=0//初始化

for(int k=0k<matrix2.length++k)

r[i][j]+=matrix1[i][k]*matrix2[k][j]

}

}

//输出结果

for(int i=0i<r.length++i)

System.out.println(Arrays.toString(r[i]))

}

}