矩阵的运算(JAVA实训)-JavierWu

发布于 2019-11-26  11 次阅读


矩阵的运算(JAVA实训)

实训目的:

熟悉和掌握Java的基本语法,熟悉类的定义与对象的使用。

实训要求:

设计一个类,该类中有行数和列数两个属性,以及有多个构
造方法,能实现矩阵的加法、减法、矩阵与数的乘法、矩阵与矩阵的乘法及矩阵的转置。

在这里插入图片描述

matrix.java

package program1

public class matrix {
	private int l1,r1
	private int [][] a
	
	public matrix(int l,int r,int[][] a){
		this.l1=l
		this.r1=r
		this.a=a
	}
	
	public void add(int l2,int r2,int[][] b){
		int [][] c=new int[1005][1005]
		if(l1!=l2||r1!=r2)
			System.out.println("矩阵错误!")
		else
		{
			for(int i=0i<l1i++)
				for(int j=0j<r1j++)
					c[i][j]=a[i][j]+b[i][j]
			print(c)
		}
	}
	
	public void subtraction(int l2,int r2,int[][] b){
		int [][] c=new int[1005][1005]
		if(l1!=l2||r1!=r2)
			System.out.println("矩阵错误!")
		else
		{
			for(int i=0i<l1i++)
				for(int j=0j<r1j++)
					c[i][j]=a[i][j]-b[i][j]
			print(c)
		}
	}
	
	public void mathmultiply(int math){
		int [][] c=new int[1005][1005]
		for(int i=0i<l1i++)
			for(int j=0j<r1j++)
				c[i][j]=a[i][j]*math
		print(c)
	}
	
	public void matrixmultiply(int l2,int r2,int[][] b){
		int [][] c=new int[1005][1005]
		if(r1!=l2)
			System.out.println("矩阵错误!")
		else
		{
			for(int i=0i<l1i++){
				for(int k=0k<r2k++){
					c[i][k]=0
					for(int j=0j<r1j++)
						c[i][k]+=a[i][j]*b[j][k]
					}
			}
			System.out.println(l1+" "+r1+" "+l2+" "+r2)
			for(int i=0i<l1i++)
			{
				for(int j=0j<r2j++)
					System.out.print(c[i][j]+" ")
				System.out.println()
			}
		}
	}
	
	public void transpose(){
		int [][] c=new int[1005][1005]
		for(int i=0i<l1i++)
			for(int j=0j<r1j++)
				c[i][j]=a[j][i]
		print(c)
	}
	
	public void print(int[][] a){
		for(int i=0i<l1i++)
		{
			for(int j=0j<r1j++)
				System.out.print(a[i][j]+" ")
			System.out.println()
		}
	}
}

Test.java

package program1

import java.util.Scanner

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int l1,r1,l2,r2,flag
		int [][] a=new int[1005][1005]
		int [][] b=new int[1005][1005]
		Scanner sc=new Scanner(System.in)
		System.out.println("请输入矩阵1的行l1:")
		l1=sc.nextInt()
		System.out.println("请输入矩阵1的列r1:")
		r1=sc.nextInt()
		System.out.println("请输入矩阵1:")
		for(int i=0i<l1i++)
			for(int j=0j<r1j++)
				a[i][j]=sc.nextInt()
		System.out.println("请选择要进行的操作:")
		System.out.println("1:矩阵相加。")
		System.out.println("2:矩阵相减。")
		System.out.println("3:矩阵与数的乘法。")
		System.out.println("4:矩阵与矩阵的乘法。")
		System.out.println("5:矩阵的转置。")
		flag=sc.nextInt()
		if(flag==1)
		{
			System.out.println("请输入矩阵2的行l2:")
			l2=sc.nextInt()
			System.out.println("请输入矩阵2的列r2:")
			r2=sc.nextInt()
			System.out.println("请输入矩阵2:")
			for(int i=0i<l2i++)
				for(int j=0j<r2j++)
					b[i][j]=sc.nextInt()
			matrix m1=new matrix(l1,r1,a)
			m1.add(l2,r2,b)
		}
		if(flag==2)
		{
			System.out.println("请输入矩阵2的行l2:")
			l2=sc.nextInt()
			System.out.println("请输入矩阵2的列r2:")
			r2=sc.nextInt()
			System.out.println("请输入矩阵2:")
			for(int i=0i<l2i++)
				for(int j=0j<r2j++)
					b[i][j]=sc.nextInt()
			matrix m1=new matrix(l1,r1,a)
			m1.subtraction(l2,r2,b)
		}
		if(flag==3)
		{
			int math
			System.out.println("请输入要相乘的数  math:")
			math=sc.nextInt()
			matrix m1=new matrix(l1,r1,a)
			m1.mathmultiply(math)
		}
		if(flag==4)
		{
			System.out.println("请输入矩阵2的行l2:")
			l2=sc.nextInt()
			System.out.println("请输入矩阵2的列r2:")
			r2=sc.nextInt()
			System.out.println("请输入矩阵2:")
			for(int i=0i<l2i++)
				for(int j=0j<r2j++)
					b[i][j]=sc.nextInt()
			matrix m1=new matrix(l1,r1,a)
			m1.matrixmultiply(l2,r2,b)
		}
		if(flag==5)
		{
			matrix m1=new matrix(l1,r1,a)
			m1.transpose()
		}
	}

}

届ける言葉を今は育ててる
最后更新于 2019-11-26