第七章 二维数组及习题

1.输入两个矩阵,计算两个矩阵相加;
public class test7_4两个矩阵相加 {
public static void main(String[] args) {
int [][]a=new int[3][3];
int [][]b=new int[3][3];
int [][]c=new int[3][3];
Scanner scanner=new Scanner(System.in);
System.out.println(“enter a:”);//输入第一个数组
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
a[i][j]=scanner.nextInt();
}
}
System.out.println(“enter b:”);//输入第二个数组
for(int i=0;i<b.length;i++){
for(int j=0;j<b[i].length;j++){
b[i][j]=scanner.nextInt();
}
}
c=addMatrix(a,b);//调用函数
print(a,b,c);//输出
}
private static void print(int[][] a, int[][] b, int[][] c) {//输出格式
for(int i=0;i<a.length;i++){
if(i!=a.length/2){
System.out.printf("%d %d %d %d %d %d %d %d %d\n", a[i][0],a[i][1],a[i][2], b[i][0],b[i][1],b[i][2], c[i][0],c[i][1],c[i][2]);
}else{
System.out.printf("%d %d %d + %d %d %d = %d %d %d\n", a[i][0],a[i][1],a[i][2], b[i][0],b[i][1],b[i][2], c[i][0],c[i][1],c[i][2]);
}
}
}

private static int[][] addMatrix(int[][] a, int[][] b) {///矩阵相加的方法
if(anull||bnull){////没有元素
return null;
}
if(a.length0||b.length0){//数组长度为0,即无数组
return null;
}
if(a.length!=b.length||a[0].length!=b[0].length){//行或列不相等
return null;
}
int[][]c=new int[a.length][a[0].length];//创建c,行和列可以随便写a或b都可以
for(int i=0;i<a.length;i++){//满足条件,对应位置相加
for(int j=0;j<a[i].length;j++){
c[i][j]=a[i][j]+b[i][j];
}
}
return c;
}
2.输入两个矩阵,计算两个矩阵相乘:
public class test7_5两个矩阵相乘 {
public static void main(String[] args) {
int[][]a=new int[4][2];
int[][]b=new int[2][3];
int[][]c=new int[4][3];
*****/*思路:///c[i][j]的元素就等于a的第i行所有的元素和b的第j行所有元素对应相乘再相加;
例如:c[2][3]=a[2][1]b[1][3]加粗样式
+a[2][2]b[2][3]
+a[2][3]b[3][3]
即:c[i][j]=sum+a[i][k]b[k][j];
/

Scanner scanner=new Scanner(System.in);
System.out.println(“enter a:”);
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
a[i][j]=scanner.nextInt();
}
}
System.out.println(“enter b:”);
for(int i=0;i<b.length;i++){
for(int j=0;j<b[i].length;j++){
b[i][j]=scanner.nextInt();
}
}
c=multiplyMatrix(a,b);
}
private static int[][] multiplyMatrix(int[][] a, int[][] b) {
if(anull||bnull){
return null;
}
if(a.length0||b.length0){
return null;
}
if(a[0].length!=b.length){
return null;
}
int[][]c=new int[a[0].length][b.length];//创建c,a的列 b的行 必须相等
for(int i=0;i<c.length;i++){
for(int j=0;j<c[i].length;j++){
c[i][j]=getSum(a,b,i,j,a[0].length);
}
}
return c;
}
private static int getSum(int[][] a, int[][] b, int i, int j, int length) {//求乘积
int sum=0;
for(int k=1;k<length;k++){
sum=sum+a[i][k]*b[k][j];
}
return sum;
}

猜你喜欢

转载自blog.csdn.net/zhangpupu320/article/details/83928524
今日推荐