• 二维数组案例


    案例一


            求一个3*3矩阵对角线元素之和

            思路分析:利用双重for循环控制输入二维数组,再将a[i][j]累加后输出。i和j符合对角线元素的情况有,i=j或者i+j=a.length-1;

            代码展示:

        

    1. public static void main(String[] args) {
    2.         
    3.         //定义一个Scanner类
    4.         Scanner sc=new Scanner(System.in);
    5.         //定义一个二维数组,并从键盘获取数值
    6.         int a[][]=new int[3][3];
    7.         for (int i = 0; i < a.length; i++) {
    8.             System.out.println("请输入a["+i+"]一维数组内的三个整数:");
    9.             for (int j = 0; j < a[i].length; j++) {
    10.                 a[i][j]=sc.nextInt();
    11.             }
    12.         }
    13.         //打印输出这个3*3矩阵的二维数组
    14.         int sum=0;
    15.         System.out.println("这个3*3矩阵的二维数组为:");
    16.         for (int i = 0; i < a.length; i++) {
    17.             for (int j = 0; j < a[i].length; j++) {
    18.                 System.out.print(a[i][j]+"\t");
    19.                 if (i==j&&i+j!=a.length-1||i+j==a.length-1) {
    20.                     sum+=a[i][j];
    21.                 }
    22.             }
    23.             System.out.println();
    24.         }
    25.         System.out.println("对角线元素之和:"+sum);
    26.     }

    案例二


            定义一个4行4列的二维数组,逐个从键盘输入值,然后将第1行和第4行的数据进行交换,将第2行和第3行的数据进行交换

            思路分析:利用Arrays.copyOf方法复制

            代码展示:

        

    1. public static void main(String[] args) {
    2.  
    3.         // 定义一个Scanner类
    4.         Scanner sc = new Scanner(System.in);
    5.         
    6.         // 定义一个二维数组,并从键盘获取数值
    7.         int[][] a = new int[4][4];
    8.         for (int i = 0; i < a.length; i++) {
    9.             System.out.println("请输入a[" + i + "]一维数组内的" + a.length + "个整数:");
    10.             for (int j = 0; j < a[i].length; j++) {
    11.                 a[i][j] = sc.nextInt();
    12.             }
    13.         }
    14.         
    15.         // 打印输出这个44列二维数组
    16.         System.out.println("这个4行4例的二维数组为:");
    17.         for (int i = 0; i < a.length; i++) {
    18.             for (int j = 0; j < a[i].length; j++) {
    19.                 System.out.print(a[i][j] + "\t");
    20.             }
    21.             System.out.println();
    22.         }
    23.  
    24.         // 定义一个中间的一维数组b,作为第1行和第4行交换的中间临时存储数组
    25.         int[] b = new int[4];
    26.         b = Arrays.copyOf(a[0], 4);
    27.         a[0] = Arrays.copyOf(a[3], 4);
    28.         a[3] = b;
    29.  
    30.         // 定义一个中间的一维数组c,作为第2行和第3行交换的中间临时存储数组
    31.         int[] c = new int[4];
    32.         c = Arrays.copyOf(a[1], 4);
    33.         a[1] = Arrays.copyOf(a[2], 4);
    34.         a[2] = c;
    35.         
    36.         //打印输出交换后的44列二维数组
    37.         System.out.println("交换后的4行4例二维数组为:");
    38.         for (int i = 0; i < a.length; i++) {
    39.             for (int j = 0; j < a[i].length; j++) {
    40.                 System.out.print(a[i][j] + "\t");
    41.             }
    42.             System.out.println();
    43.         }
    44.     }

    案例三


            定义一个3行4列的二维数组,逐个从键盘输入值,编写程序将四周的数据清0

            思路分析:当a[i][j]数组的下标满足:i==0 || i==a.length-1 || j==0 || j==a[i].length-1,清理即可

            代码展示:

      

    1.  public static void main(String[] args) {
    2.         
    3.         //定义一个Scanner类
    4.         Scanner sc=new Scanner(System.in);
    5.         
    6.         //定义一个二维数组,并从键盘获取数值
    7.         int a[][]=new int[3][4];
    8.         for (int i = 0; i < a.length; i++) {
    9.             System.out.println("请输入a["+i+"]一维数组内的三个整数:");
    10.             for (int j = 0; j < a[i].length; j++) {
    11.                 a[i][j]=sc.nextInt();
    12.             }
    13.         }
    14.         
    15.         //打印输出这个3*4矩阵的二维数组
    16.         System.out.println("这个3行4列的二维数组为:");
    17.         for (int i = 0; i < a.length; i++) {
    18.             for (int j = 0; j < a[i].length; j++) {
    19.                 
    20.                 //根据分析可知,要想四周为0,则当i=0或者i=2或者j=0或者j=3时,数值为0
    21.                 if(i==0||i==a.length-1||j==0||j==a[i].length-1){
    22.                     a[i][j]=0;
    23.                 }
    24.                     
    25.                 System.out.print(a[i][j]+"\t");
    26.                 
    27.             }
    28.             System.out.println();
    29.         }
    30.     }

    案例四


            定义一个3行4列的二维数组,逐个从键盘输入值,将左下三角的值清0

            思路分析:a[i][j]数组,当i>=j的时候,为左下角三角形的数值(包含对角线);如果不需要包含对角线数值,则只需要i>j即可额。

            代码展示:

      

    1.  public static void main(String[] args) {
    2.  
    3.         //定义一个Scanner类
    4.         Scanner sc=new Scanner(System.in);
    5.         
    6.         //定义一个二维数组,并从键盘获取数值
    7.         int a[][]=new int[3][4];
    8.         for (int i = 0; i < a.length; i++) {
    9.             System.out.println("请输入a["+i+"]一维数组内的三个整数:");
    10.             for (int j = 0; j < a[i].length; j++) {
    11.                 a[i][j]=sc.nextInt();
    12.             }
    13.         }
    14.         
    15.         //打印输出这个3*4矩阵的二维数组
    16.         System.out.println("这个3行4列的二维数组为:");
    17.         for (int i = 0; i < a.length; i++) {
    18.             for (int j = 0; j < a[i].length; j++) {
    19.                 
    20.                 //根据分析可知,要想左下三角的值为零,则i值不大于j值即可实现
    21.                 if(i>=j){
    22.                     a[i][j]=0;
    23.                 }
    24.                     
    25.                 System.out.print(a[i][j]+"\t");
    26.                 
    27.             }
    28.             System.out.println();
    29.         }
    30.     }

  • 相关阅读:
    端侧模型带来的三个新思考:剪枝、蒸馏、量化
    R语言使用DALEX包对h2o包构建的机器学习模型进行解释分析:总结及实战
    MongoDB的安装配置及使用(WIndows/Java)
    Vue项目实战——【基于 Vue3.x + Vant UI】实现一个多功能记账本(项目演示、涉及知识点、源码分享)
    45、Collections工具类
    lnmp架构之mysql部署
    2024/6/2 英语每日一段
    Linux安装MySQL8.0服务
    jupyter notebook使用相对路径的方法
    OpenCV 图像处理学习二十二,基于距离变换和分水岭的图像分割
  • 原文地址:https://blog.csdn.net/rbh200812/article/details/126820965