zoukankan      html  css  js  c++  java
  • 二维数组

     

    3.1 数据交换

    案例需求

    已知两个整数变量a = 10,b = 20,使用程序实现这两个变量的数据交换 最终输出a = 20,b = 10;

    代码实现

    package com.itheima.test;

    public class Test1 {
       /*
           需求:已知两个整数变量a = 10,b = 20,使用程序实现这两个变量的数据交换
           最终输出a = 20,b = 10;


           思路:
           1. 定义一个三方变量temp,将a原本记录的值,交给temp记录 (a的值,不会丢了)
           2. 使用 a 变量记录 b 的值,(第一步交换完毕,b的值也丢不了了)
           3. 使用 b 变量记录 temp的值,也就是a原本的值 (交换完毕)
           4. 输出 a 和 b 变量即可
        */
       /*
           动态初始化格式:

               数据类型[][] 变量名 = new 数据类型[m][n];
               m表示这个二维数组,可以存放多少个一维数组
               n表示每一个一维数组,可以存放多少个元素
        */
       public static void main(String[] args) {
           int a = 10;
           int b = 20;

           // 将a原本记录的值,交给temp记录 (a的值,不会丢了)
           int temp = a;
           // 用 a 变量记录 b 的值,(第一步交换完毕,b的值也丢不了了)
           a = b;
           // 使用 b 变量记录 temp的值,也就是a原本的值 (交换完毕)
           b = temp;

           // 输出 a 和 b 变量即可
           System.out.println("a=" + a);
           System.out.println("b=" + b);
      }
    }

    3.2 数组反转【应用】

    案例需求 :

    已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换,

    交换后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出交换后的数组元素

    实现步骤 :

    1. 定义两个变量, start和end来表示开始和结束的指针.          
    1. 确定交换条件, start < end 允许交换

    2. 循环中编写交换逻辑代码

    3. 每一次交换完成, 改变两个指针所指向的索引 start++, end--

    4. 循环结束后, 遍历数组并打印, 查看反转后的数组

    代码实现 :

    package com.itheima.test;

    public class Test2 {
       /*
           需求:已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换,
             交换后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出交换后的数组元素。

           步骤:
                 1. 定义两个变量, start和end来表示开始和结束的指针.
                 2. 确定交换条件, start < end 允许交换
                 3. 循环中编写交换逻辑代码
                 4. 每一次交换完成, 改变两个指针所指向的索引 start++, end--
                 5. 循环结束后, 遍历数组并打印, 查看反转后的数组
        */
       public static void main(String[] args) {
           int[] arr = {19, 28, 37, 46, 50};
           // 1. 定义两个变量, start和end来表示开始和结束的指针.
           int start = 0;
           int end = arr.length -1;
           // 2. 确定交换条件, start < end 允许交换
           // 4. 每一次交换完成, 改变两个指针所指向的索引 start++, end--
           // for(int start = 0, end = arr.length -1; start < end; start++, end--)
           for( ; start < end; start++, end--){
               // 3. 循环中编写交换逻辑代码
               int temp = arr[start];
               arr[start] = arr[end];
               arr[end] = temp;
          }

           for (int i = 0; i < arr.length; i++) {
               System.out.println(arr[i]);
          }
      }
    }

    3.3 二维数组概述

    概述 : 二维数组也是一种容器,不同于一维数组,该容器存储的都是一维数组容器

    3.4 二维数组动态初始化

    动态初始化格式:

    数据类型[][] 变量名 = new 数据类型[m][n];
    m表示这个二维数组,可以存放多少个一维数组
    n表示每一个一维数组,可以存放多少个元素
    package com.itheima.demo;

    public class Demo1Array {
       /*
           动态初始化格式:

               数据类型[][] 变量名 = new 数据类型[m][n];
               m表示这个二维数组,可以存放多少个一维数组
               n表示每一个一维数组,可以存放多少个元素
        */
       public static void main(String[] args) {
           // 数据类型[][] 变量名 = new 数据类型[m][n];
           int[][] arr = new int[3][3];
           /*
               [[I@10f87f48

               @ : 分隔符
               10f87f48 : 十六进制内存地址
               I : 数组中存储的数据类型
               [[ : 几个中括号就代表的是几维数组
            */
           System.out.println(arr);

           /*
               二维数组存储一维数组的时候, 存储的是一维数组的内存地址
            */
           System.out.println(arr[0]);
           System.out.println(arr[1]);
           System.out.println(arr[2]);

           System.out.println(arr[0][0]);
           System.out.println(arr[1][1]);
           System.out.println(arr[2][2]);

           // 向二维数组中存储元素
           arr[0][0] = 11;
           arr[0][1] = 22;
           arr[0][2] = 33;

           arr[1][0] = 11;
           arr[1][1] = 22;
           arr[1][2] = 33;

           arr[2][0] = 11;
           arr[2][1] = 22;
           arr[2][2] = 33;

           // 从二维数组中取出元素并打印
           System.out.println(arr[0][0]);
           System.out.println(arr[0][1]);
           System.out.println(arr[0][2]);
           System.out.println(arr[1][0]);
           System.out.println(arr[1][1]);
           System.out.println(arr[1][2]);
           System.out.println(arr[2][0]);
           System.out.println(arr[2][1]);
           System.out.println(arr[2][2]);
      }
    }

    3.5 二维数组访问元素的细节问题

    问题 : 二维数组中存储的是一维数组, 那能不能存入 [提前创建好的一维数组] 呢 ?

    答 : 可以的

    代码实现

    package com.itheima.demo;

    public class Demo2Array {
       /*
           问题: 二维数组中存储的是一维数组, 那能不能存入 [提前创建好的一维数组] 呢 ?
           答 : 可以的
        */
       public static void main(String[] args) {
           int[] arr1 = {11,22,33};
           int[] arr2 = {44,55,66};
           int[] arr3 = {77,88,99,100};

           int[][] arr = new int[3][3];

           arr[2][3] = 100;

           arr[0] = arr1;
           arr[1] = arr2;
           arr[2] = arr3;

           System.out.println(arr[1][2]);
           System.out.println(arr[2][3]);
      }
    }

    3.6 二维数组静态初始化

    **完整格式 :** 数据类型[][] 变量名 = new 数据类型[][]{ {元素1, 元素2...} , {元素1, 元素2...} 

    **简化格式 :** 数据类型[][] 变量名 = { {元素1, 元素2...} , {元素1, 元素2...} ...};

    代码实现 :

    package com.itheima.demo;

    public class Demo3Array {
       /*
           完整格式:数据类型[][] 变量名 = new 数据类型[][]{ {元素1, 元素2...} , {元素1, 元素2...} ...};

           简化格式: 数据类型[][] 变量名 = { {元素1, 元素2...} , {元素1, 元素2...} ...};
        */
       public static void main(String[] args) {
           int[] arr1 = {11,22,33};
           int[] arr2 = {44,55,66};

           int[][] arr = {{11,22,33}, {44,55,66}};
           System.out.println(arr[0][2]);

           int[][] array = {arr1,arr2};
           System.out.println(array[0][2]);
      }
    }

    3.7 二维数组遍历

    需求 :

    已知一个二维数组 arr = {{11, 22, 33}, {33, 44, 55}};

    遍历该数组,取出所有元素并打印

    步骤 :

    1. 遍历二维数组,取出里面每一个一维数组
    2. 在遍历的过程中,对每一个一维数组继续完成遍历,获取内部存储的每一个元素

    代码实现 :

    package com.itheima.test;

    public class Test1 {
       /*
           需求:

               已知一个二维数组 arr = {{11, 22, 33}, {33, 44, 55}};
               遍历该数组,取出所有元素并打印

           步骤:
               1. 遍历二维数组,取出里面每一个一维数组
               2. 在遍历的过程中,对每一个一维数组继续完成遍历,获取内部存储的每一个元素
        */
       public static void main(String[] args) {
           int[][] arr = {{11, 22, 33}, {33, 44, 55}};

           // 1. 遍历二维数组,取出里面每一个一维数组
           for (int i = 0; i < arr.length; i++) {
               //System.out.println(arr[i]);
               // 2. 在遍历的过程中,对每一个一维数组继续完成遍历,获取内部存储的每一个元素
               //int[] temp = arr[i];
               for (int j = 0; j < arr[i].length; j++) {
                   System.out.println(arr[i][j]);
              }
          }
      }
    }

    3.8 二维数组求和

    需求 :

    某公司季度和月份统计的数据如下:单位(万元)
    第一季度:22,66,44
    第二季度:77,33,88
    第三季度:25,45,65
    第四季度:11,66,99

    步骤 :

    1. 定义求和变量,准备记录最终累加结果

    2. 使用二维数组来存储数据,每个季度是一个一维数组,再将4个一维数组装起来

    3. 遍历二维数组,获取所有元素,累加求和

    4. 输出最终结果

    代码实现 :

    package com.itheima.test;
    
    public class Test2 {
        /*
            需求:
                某公司季度和月份统计的数据如下:单位(万元)
                第一季度:22,66,44
                第二季度:77,33,88
                第三季度:25,45,65
                第四季度:11,66,99
    
            步骤:
                1. 定义求和变量,准备记录最终累加结果
                2. 使用二维数组来存储数据,每个季度是一个一维数组,再将4个一维数组装起来
                3. 遍历二维数组,获取所有元素,累加求和
                4. 输出最终结果
         */
        public static void main(String[] args) {
            // 1. 定义求和变量,准备记录最终累加结果
            int sum = 0;
            // 2. 使用二维数组来存储数据,每个季度是一个一维数组,再将4个一维数组装起来
            int[][] arr = { {22,66,44} , {77,33,88} , {25,45,65} , {11,66,99}};
            // 3. 遍历二维数组,获取所有元素,累加求和
            for (int i = 0; i < arr.length; i++) {
                for(int j = 0; j < arr[i].length; j++){
                    sum += arr[i][j];
                }
            }
            // 4. 输出最终结果
            System.out.println(sum);
        }
    }
  • 相关阅读:
    bzoj3223: Tyvj 1729 文艺平衡树
    bzoj1014: [JSOI2008]火星人prefix
    bzoj3231: [Sdoi2008]递归数列
    bzoj2282: [Sdoi2011]消防
    bzoj3195: [Jxoi2012]奇怪的道路
    成员内部类 局部内部类 匿名内部类
    静态代码块 构造代码块
    父类子类转换
    clone()方法
    后缀表达式求值
  • 原文地址:https://www.cnblogs.com/linux985/p/15048239.html
Copyright © 2011-2022 走看看