二维数组习题整理(一)

 这道题目的关键是,求列上的数字之和时,保持列不变,行相加;求行上数字之和时,保持行不变,列相加

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();
          }
     }
}
发布了21 篇原创文章 · 获赞 0 · 访问量 353

猜你喜欢

转载自blog.csdn.net/weixin_44318477/article/details/104406511