矩阵和向量的乘积。要求矩阵和两个向量作为类私有成员变量,系统地生成构造方法,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+" ");
}
}