矩阵和向量的乘积

矩阵和向量的乘积。要求矩阵和两个向量作为类私有成员变量,系统地生成构造方法,getters和setters。
(矩阵乘向量与向量乘矩阵是不同的)

import java.util.Scanner;

public class JuZhen {
	private int juZhen[][];
 	private int xl1[], xl2[];
//系统生成的getters、setters和构造方法
public int[][] getJuZhen() {
  	return juZhen;
 }
 public void setJuZhen(int[][] juZhen) {
  	this.juZhen = juZhen;
 }
 public int[] getXl1() {
  	return xl1;
 }
 public void setXl1(int[] xl1) {
  	this.xl1 = xl1;
 }
 public int[] getXl2() {
  	return xl2;
 }
 public void setXl2(int[] xl2) {
  	this.xl2 = xl2;
 }
 public JuZhen(int[][] juZhen, int[] xl1, int[] xl2) {
  	super();
  	this.juZhen = juZhen;
 	this.xl1 = xl1;
 	this.xl2 = xl2;
 }
 //自制方法
 //输入一个数,判断其是否大于0,否则重新输入,返回输入的值
 public int shuRuPanDuan0() {
  	Scanner scanner = new Scanner(System.in);  
	int n, flag;  
  	do{ 
   		flag = 0;
   		n = scanner.nextInt();
   		if (n <= 0) {
    			System.out.println("输入错误!请重新输入此数:");
    			flag = 1;
  		}
  	}while(flag == 1);
 	return n;
 } 
 //给m行n列的矩阵赋值
 public void writeJZ(int arr[][]){
  	Scanner scanner = new Scanner(System.in);
  	for (int i = 0; i < juZhen.length; i++) {
   		for (int j = 0; j < juZhen[0].length; j++) {
    			System.out.printf("输入第%d行第%d列的值:", i+1, j+1);
    			juZhen[i][j] = scanner.nextInt();
   		}   
 	 }
 } 
 //给向量赋值
 public void writeXL(int arr[]){
  	Scanner scanner = new Scanner(System.in);
  	for (int i = 0; i < arr.length; i++) {
   		System.out.printf("输入第%d行的值:", i+1);
   		arr[i] = scanner.nextInt();
  	}
 }
 //m行n列的矩阵和n行的向量相乘,返回一个向量
 public int[] chengFa(int juZhen[][], int a[]) {
  	int result[] = new int[juZhen.length];
  	for (int i = 0; i < juZhen.length; i++) {
   		for (int j = 0; j < a.length; j++) {
    			result[i] = result[i] + juZhen[i][j] * a[j];
   		}   
  	}   
  	return result;  
 } 
 
 //主方法
public static void main(String[] args) {  
  	JuZhen jz= new JuZhen(null, null, null);  
  
 	 //输入m,n,并给矩阵向量分配空间
  	System.out.println("m行n列的矩阵和n行的向量相乘");
 	System.out.println("(矩阵的列与向量的行数相同,否则不能相乘)");
  	System.out.print("请先输入矩阵的行数m,再输入矩阵的列数n:");  
  	jz.setJuZhen(new int[jz.shuRuPanDuan0()][jz.shuRuPanDuan0()]);
  	jz.setXl1(new int[jz.getJuZhen()[0].length]);
  	//给矩阵赋值
  	System.out.println("输入矩阵:");
  	jz.writeJZ(jz.getJuZhen());
  	//给向量1赋值
  	System.out.println("输入向量1:");
  	jz.writeXL(jz.getXl1());
  	//相乘结果放进向量2
  	jz.setXl2(jz.chengFa(jz.getJuZhen(), jz.getXl1()));
  	System.out.println("结果为:");
  	for (int i : jz.getXl2()) System.out.println(i+" ");      
 }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值