• java基础学习_基础语法(下)02_day06总结


    =============================================================================
    =============================================================================

    涉及到的知识点有:
    1:二维数组(理解)
      (1)二维数组的定义
      (2)二维数组的格式
        格式一:(自动动态初始化)
        格式二:(半自动动态初始化)
        格式三:(静态初始化)
        面试题:
      (3)二维数组的案例(掌握)
        A:二维数组的遍历
        B:二维数组的求和
        C:打印杨辉三角形(行数可以键盘录入)
    2:两个思考题(理解)
      (1)Java中的参数传递问题及图解。
      (2)数据加密问题。

    =============================================================================
    =============================================================================
    1:二维数组(理解)
      (1)二维数组的定义:元素是一维数组的数组。
      (2)二维数组的格式:
        格式一:(自动动态初始化)
          数据类型[][] 数组名 = new 数据类型[m][n];   //常用这个格式。
          数据类型 数组名[][] = new 数据类型[m][n];   //该格式可以,但是很少用了。
          数据类型[] 数组名[] = new 数据类型[m][n];   //该格式也可以,但是很少用了。
          m表示这个二维数组有多少个一维数组。
          n表示每一个一维数组的元素个数。
          举例:
            int[][] arr = new int[3][2];

            定义了一个二维数组arr。
            这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]。
            每个一维数组有2个元素,可以通过arr[m][n]来获取。
            即:    arr[m][n] 表示获取第m+1个一维数组的第n+1个元素。
            例如:arr[1][2] 表示获取第2个一维数组的第3个元素。
    如下如图所示01:

    ---------------------------------------
        格式二:(半自动动态初始化)
          数据类型[][] 数组名 = new 数据类型[m][];
          m表示这个二维数组有多少个一维数组。
          这一次没有直接给出一维数组的元素个数,可以动态的给出。
          举例:
            int[][] arr = new int[3][];
            arr[0] = new int[2];
            arr[1] = new int[3];
            arr[2] = new int[1];
    如下如图所示02:

    ---------------------------------------
        格式三:(静态初始化)
          数据类型[][] 数组名 = new 数据类型[][]{ {...}, {...}, {...} };
          数据类型[][] 数组名 = { {...}, {...}, {...} };   格式三的简化版格式
        举例:
          int[][] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
          int[][] arr = { { 1, 2, 3 }, { 4, 5 }, { 6 } };
    如下如图所示03:


        面试题:
          下面定义的区别:
          int x, y; //定义了1个int类型的变量x,同时也定义了1个int类型的变量y。
          //等价于
          int x;
          int y;
          ---------------------------------------
          int[] x, y[]; //定义了1个int类型的一维数组x,同时也定义了1个int类型的二维数组y。
          //等价于
          int[] x;
          int[] y[];

      (3)二维数组的案例(掌握):
        A:二维数组的遍历
          外循环控制的是二维数组的长度,其实就是一维数组的个数。
          内循环控制的是一维数组的长度。
          public static void printArray2(int[][] arr) {
            for(int x = 0; x < arr.length; x++) {
              for(int y = 0; y < arr[x].length; y++) {
                System.out.print(arr[x][y]+" ");
              }
              System.out.println();
            }
          }
        B:二维数组的求和
          int sum = 0;
          for(int x = 0; x < arr.length; x++) {
            for(int y = 0; y < arr[x].length; y++) {
              sum += arr[x][y];
            }
          }
        C:打印杨辉三角形(行数可以键盘录入)

     1 /*
     2     需求:打印杨辉三角形(行数可以键盘录入)
     3     
     4     1
     5     1 1    
     6     1 2 1
     7     1 3 3 1
     8     1 4 6 4 1 
     9     1 5 10 10 5 1
    10 
    11     分析:看这种图像的规律:
    12         A:任何一行的第一列和最后一列都是1。
    13         B:从第三行开始,除去第一列和最后一列,剩余的每一列的数据是它上一行的前一列和它上一行的本列之和。
    14     
    15     步骤:
    16         A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。
    17             这个n的数据来自于键盘录入。
    18         B:给这个二维数组任何一行的第一列和最后一列赋值为1。
    19         C:按照规律给其他元素赋值:
    20              从第三行开始,除去第一列和最后一列,剩余的每一列的数据是它上一行的前一列和它上一行的本列之和。
    21         D:遍历这个二维数组。
    22 */
    23 import java.util.Scanner;
    24 
    25 class Array2Test3 {
    26     public static void main(String[] args) {
    27         //创建键盘录入对象。
    28         Scanner sc = new Scanner(System.in);
    29         
    30         //这个n的数据来自于键盘录入。
    31         System.out.println("请输入一个数据:");
    32         int n = sc.nextInt();
    33         
    34         //定义二维数组
    35         int[][] arr = new int[n][n];
    36         
    37         //给这个二维数组任何一行的第一列和最后一列赋值为1
    38         for(int x = 0; x < arr.length; x++) {
    39             arr[x][0] = 1; //任何一行第一列
    40             arr[x][x] = 1; //任何一行的最后一列
    41         }
    42         
    43         //按照规律给其他元素赋值
    44         //从第三行开始,除去第一列和最后一列,剩余的每一列的数据是它上一行的前一列和它上一行的本列之和。
    45         for(int x = 2; x < arr.length; x++) {
    46             //这里如果 y <= x 是有个小问题的,就是最后一列的问题,因为最后一列已经给过值了。
    47             //所以这里要减去1
    48             //并且y也应该从1开始,因为第一列也给过值了。
    49             for(int y = 1; y <= x - 1; y++) {
    50                 //除去第一列和最后一列,剩余的每一列的数据是它上一行的前一列和它上一行的本列之和。
    51                 arr[x][y] = arr[x - 1][y - 1] + arr[x - 1][y];
    52             }
    53         }
    54         
    55         //遍历这个二维数组。
    56         /*
    57         for(int x = 0; x < arr.length; x++) {
    58             for(int y = 0; y < arr[x].length; y++) {
    59                 System.out.print(arr[x][y]+"	");
    60             }
    61             System.out.println();
    62         }
    63         */
    64         //这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似。
    65         for(int x = 0; x < arr.length; x++) {
    66             for(int y = 0; y <= x; y++) {
    67                 System.out.print(arr[x][y]+"	");
    68             }
    69             System.out.println();
    70         }
    71     }
    72 }    

    -----------------------------------------------------------------------------
    2:两个思考题(理解)
      (1)Java中的参数传递问题及图解。
        基本类型:形式参数的改变对实际参数没有影响。
        引用类型:形式参数的改变直接影响实际参数。

        基本类型:传递的是基本类型的数据值。
        引用类型:传递的是地址值。

        小结:不管怎么说,都是值,即在Java中,只有值传递。

    如下图所示04:

      (2)数据加密问题。
        综合的小案例
        int index = 0;
        arr[index] = number % 10 = number / 1 % 10;

        index++;
        arr[index] = number / 10 % 10 = number / 10 % 10;

        index++;
        arr[index] = number / 10 / 10 % 10 = number /100 % 10;
        ......
        ---------------------------------------
        int index = 0;
        while (number > 0) {
          arr[index] = number % 10;
          number /= 10;
        }

    示例代码如下:

     1 /*
     2     把刚才的代码改进一下:
     3         A:把数据改进为键盘录入
     4         B:把代码改进为方法实现
     5         
     6         
     7         另一个数据的测试:
     8         number:1234567
     9         第一步:7654321
    10         第二步:2109876
    11         第三步:6109872
    12         
    13     知识点:
    14         变量
    15         数据类型
    16         运算符
    17         键盘录入
    18         语句
    19         方法
    20         数组
    21 */
    22 import java.util.Scanner;
    23 
    24 class JiaMiDemo2 {
    25     public static void main(String[] args) {
    26         //创建键盘录入对象
    27         Scanner sc = new Scanner(System.in);
    28         
    29         //请输入一个数据
    30         System.out.println("请输入一个数据(小于8位):");
    31         int number = sc.nextInt();
    32         
    33         //写功能实现把number进行加密
    34         //调用
    35         String result = jiaMi(number);
    36         System.out.println("加密后的结果是:"+result);
    37     }
    38     
    39     /*
    40         需求:写一个功能,把数据number实现加密。
    41         两个明确:
    42             返回值类型:String     为了做一个字符串的拼接。
    43             参数列表:int number
    44     */
    45     public static String jiaMi(int number) {
    46         //定义数组
    47         int[] arr = new int[8];
    48         
    49         //定义索引
    50         int index = 0;
    51         
    52         //把number中的数据想办法放到数组中
    53         while(number > 0) {
    54             arr[index] = number % 10;
    55             index++;
    56             number /= 10;
    57         }
    58         
    59         //把每个数据加5,然后对10取得余数
    60         for(int x = 0; x < index; x++) {
    61             arr[x] += 5;
    62             arr[x] %= 10;
    63         }
    64         
    65         //把第一位和最后一位交换
    66         int temp = arr[0];
    67         arr[0] = arr[index - 1];
    68         arr[index - 1] = temp;
    69         
    70         //把数组的元素拼接成一个字符串返回
    71         //定义一个空内容字符串
    72         String s = "";
    73         
    74         for(int x = 0; x < index; x++) {
    75             s += arr[x];
    76         }
    77         
    78         return s;
    79     }
    80 }

    =============================================================================

  • 相关阅读:
    vnode之update 还是没太懂
    vnodec创建之标签
    1054 求平均值
    1053 住房空置率
    1052 卖个萌
    1051 复数乘法
    1050 螺旋矩阵
    1049 数列的片段和
    1048 数字加密
    1047 编程团体赛
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/8433867.html
Copyright © 2020-2023  润新知