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]+"\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;     }

示例代码如下:

 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 }

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小小挖掘机

Numpy基础知识点汇总

1、概述 Numpy是高性能科学计算和数据分析的基础包,它的部分功能如下: 1)ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。 ...

32540
来自专栏图像识别与深度学习

2018-07-02Python数组

12730
来自专栏武培轩的专栏

排序算法-希尔排序

上一篇讲解了简单插入排序算法,以及在其基础上优化的二分插入排序算法,但是每次插入需要按间隔为 1 移动有序区的元素,效率不高,下面我们来介绍一种新的插入排序算法...

35640
来自专栏Petrichor的专栏

numpy: np.asarray 函数

简而言之: 主要区别在于 np.array (默认情况下)将会copy该对象,而 np.asarray 除非必要,否则不会copy该对象。

28230
来自专栏用户2442861的专栏

python 中 常用到的 numpy 函数 整理

http://blog.csdn.net/timidsmile/article/details/16963699

8420
来自专栏desperate633

二维数组中的查找代码

9220
来自专栏Python小屋

Python版堆排序算法

其他排序算法的Python实现请参考:Python版归并排序算法(附Python程序__name__属性用法演示视频),侏儒排序算法原理与Python实现,Py...

35650
来自专栏我是业余自学C/C++的

原 三对角矩阵

15530
来自专栏Petrichor的专栏

numpy: np.where

Note : 不接受 list 型的参数,只接受 `ndarray 型输入。

13830
来自专栏我的博客

C编程笔记

1.编译命令gcc test.c -o test 带上参数o就是指定编译文件名 2.printf(“%.2lf”,b) 其中前面2是小数点后位数,l是字母...

37550

扫码关注云+社区

领取腾讯云代金券