这道题目的关键是,求列上的数字之和时,保持列不变,行相加;求行上数字之和时,保持行不变,列相加
import java.util.*;
class demo9{
/*
求特定列中数字之和,那么则列不变,行变
1.提示用户输入数字
2.定义一个3行4列的数组
3.遍历该二维数组
4.保持列不变,遍历行上的数字,让他们相加
*/
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1.提示用户输入数字
System.out.print("请输入数字");
//2.定义一个3行4列的数组
double[][] matrix=new double[3][4];
//3.遍历该二维数组
for(int i=0;i<matrix.length;i++){//遍历行数
for(int j=0;j<matrix[0].length;j++){//遍历每一行上的数字
matrix[i][j]=scanner.nextDouble();//获取到用户输入的数字
}
}
for(int col=0;col<matrix[0].length;col++){//定义col代表列
System.out.println(sumColumn(matrix,col));
}
}
public static double sumColumn(double[][] m,int col){
double sum=0;
for(int row=0;row<m.length;row++){
sum+=m[row][col];
}
return sum;
}
}
同样以这道题为例,计算每行的和
不管是求主对角线上各元素之和,还是副对角线上各元素之和,我们会发现在主对角线上,行角标和列角标一致;在副对角线上行角标+列角标=matrix
import java.util.*;
/*
在方阵中求主对角上的数之和 在行列数都是4的方阵中其实就是相当于(0,0)(1,1)(2,2)(3,3)这几个位置上的数字之和
我们会发现这几个数的位置,它们的行和列数是一样的
*/
class test10{
public static void main(String[] args){
Scanner s=new Scanner(System.in);
System.out.println("输入数字");
double[][] matrix=new double[4][4];
double sum=0;
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
matrix[i][j]=s.nextDouble();
}
sum+=matrix[i][i];
}
System.out.println(sum);
}
}
同样是这道题,求副对角线上的数之和
import java.util.*;
/*
在方阵中求主对角上的数之和 在行列数都是4的方阵中其实就是相当于(0,3)(1,2)(2,1)(3,0)这几个位置上的数字之和
我们会发现这几个数的位置,它们的行和列之和=matrix是一样的
*/
class test10{
public static void main(String[] args){
Scanner s=new Scanner(System.in);
System.out.println("输入数字");
double[][] matrix=new double[4][4];
double sum=0;
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
matrix[i][j]=s.nextDouble();
}
sum+=matrix[i][matrix.length-1-i];
}
System.out.println(sum);
}
}
这道题目的关键在于,两个矩阵相乘的公式:
import java.util.*;
/*
两个矩阵相称所得新的矩阵行的长度=第一个矩阵行的长度,新矩阵列的长度=第二个矩阵列的长度
*/
class test11{
public static void main(String[] args){
//提示用户输入数字
Scanner s=new Scanner(System.in);
System.out.println("输入矩阵A的数字");
double[][] A=new double[3][3];
//遍历矩阵
for(int i=0;i<A.length;i++){
for(int j=0;j<A[i].length;j++){
A[i][j]=s.nextDouble();
}
}
System.out.println("输入矩阵B的数字");
double[][] B=new double[3][3];
for(int i=0;i<B.length;i++){
for(int j=0;j<B[i].length;j++){
B[i][j]=s.nextDouble();
}
}
double[][] C=new double[A.length][B[0].length];
//遍历新矩阵
for(int i=0;i<C.length;i++){
for(int j=0;j<C[i].length;j++){
double sum=0;
for(int k=0;k<B.length;k++){//k即可看做为A的列也可看做B的行
//累加
sum+=A[i][k]*B[k][j];
}
C[i][j]=sum;
System.out.print(C[i][j]+" ");
}
System.out.println();
}
}
}