前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java基础学习_基础语法(下)02_day06总结

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

作者头像
黑泽君
发布2018-10-11 17:49:17
2880
发布2018-10-11 17:49:17
举报
文章被收录于专栏:黑泽君的专栏黑泽君的专栏

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

涉及到的知识点有: 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:打印杨辉三角形(行数可以键盘录入)

代码语言:javascript
复制
 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]+"\t");
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]+"\t");
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;     }

示例代码如下:

代码语言:javascript
复制
 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 }

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档