二维数组

 

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);
    }
}

 

posted @ 2021-07-23 11:49  冥想心灵  阅读(119)  评论(0编辑  收藏  举报