diff --git "a/31 \346\235\216\346\254\243/20221205 if\345\222\214switch\347\232\204\345\255\246\344\274\232\344\270\216\344\275\277\347\224\250.md" "b/31 \346\235\216\346\254\243/20221205 if\345\222\214switch\347\232\204\345\255\246\344\274\232\344\270\216\344\275\277\347\224\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..325c89d7f3a34cb11f71e3f12de2e1607c32b529 --- /dev/null +++ "b/31 \346\235\216\346\254\243/20221205 if\345\222\214switch\347\232\204\345\255\246\344\274\232\344\270\216\344\275\277\347\224\250.md" @@ -0,0 +1,306 @@ +## 流程控制语句 + +在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。 + +#### 分类 + +顺序结构 + +分支结构(if, switch) + +循环结构(for, while, do…while) + +#### 顺序结构执行流程图: + +顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。 + +![图片2](2img/图片2.png) + +#### 分支结构之if语句 + +##### 格式: + +```java +if (关系表达式) { + 语句体; +} +``` + + + +##### 执行流程: + +①首先计算关系表达式的值 + +②如果关系表达式的值为true就执行语句体 + +③如果关系表达式的值为false就不执行语句体 + +④继续执行后面的语句内容 + +![图片3](2img/图片3.png) + +##### 格式2: + +```java +if (关系表达式) { + 语句体1; +} else { + 语句体2; +} +``` + + + +##### 流程 + +①首先计算关系表达式的值 + +②如果关系表达式的值为true就执行语句体1 + +③如果关系表达式的值为false就执行语句体2 + +④继续执行后面的语句内容 + +![图片4](2img/图片4.png) + +##### 格式3 + +```java +if (关系表达式1) { + 语句体1; +} else if (关系表达式2) { + 语句体2; +} +… +else { + 语句体n+1; +} + + +``` + +①首先计算关系表达式1的值 + +②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值 + +③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值 + +④… + +⑤如果没有任何关系表达式为true,就执行语句体n+1。 + +![图片5](2img/图片5.png) + + + +## switch语句 + +#### 格式 + +s + +```java +witch (表达式) { + case 1: + 语句体1; + break; + case 2: + 语句体2; + break; ... + default: + 语句体n+1; + break; + } +``` + +##### 流程: + +首先计算出表达式的值 + +其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到 break就会结 束。 + +最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束 掉。 + +#### switch语句case穿透 + +概述 : 如果switch语句中,case省略了break语句, 就会开始case穿透 + +## 作业 + +```java +import java.util.Scanner; +public class task { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("请输入乘坐的车辆"); + String car = sc.next(); + switch (car){ + case "夏利" : + System.out.println("请输入行车千米数"); + double km = sc.nextDouble(); + if (km>3){ + System.out.println("价格为" + (2.1 * (km - 3) + 3) + "元"); + } else { + System.out.println("价位为3元"); + } + break; + case "富康" : + System.out.println("请输入行车千米数"); + double km1 = sc.nextDouble(); + if (km1>3){ + System.out.println("价格为" + (2.4 * (km1 - 3) + 3) + "元"); + } else { + System.out.println("价位为4元"); + } + break; + case "桑塔纳" : + System.out.println("请输入行车千米数"); + double km2 = sc.nextDouble(); + if (km2>3){ + System.out.println("价格为" + (2.7 * (km2 - 3) + 3) + "元"); + } else { + System.out.println("价位为5元"); + } + break; + default: + System.out.println("输入错误型号"); + break; + } + + + } + } +``` + +```java +import java.util.Scanner; + +public class task1 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("请输入年份:"); + int year = sc.nextInt(); + System.out.println("请输入月份:"); + int month = sc.nextInt(); + System.out.println("请输入第几天:"); + int day = sc.nextInt(); + if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { + System.out.println("请问是"+year+"年的第几天:"); + switch (month) { + case 1: + System.out.println(day); + break; + case 2: + System.out.println("第" + (31 + day) + "天"); + break; + case 3: + System.out.println("第" + (31 + 29 + day) + "天"); + break; + case 4: + System.out.println("第" + (29 + 31 * 2 + day) + "天"); + break; + case 5: + System.out.println("第" + (30 + 29 + 31 * 2 + day) + "天"); + break; + case 6: + System.out.println("第" + (30 + 29 + 31 * 3 + day) + "天"); + break; + case 7: + System.out.println("第" + (30 * 2 + 29 + 31 * 3 + day) + "天"); + break; + case 8: + System.out.println("第" + (30 * 2 + 29 + 31 * 4 + day) + "天"); + break; + case 9: + System.out.println("第" + (30 * 2 + 29 + 31 * 5 + day) + "天"); + break; + case 10: + System.out.println("第" + (30 * 3 + 29 + 31 * 5 + day) + "天"); + break; + case 11: + System.out.println("第" + (30 * 3 + 29 + 31 * 6 + day) + "天"); + break; + case 12: + System.out.println("第" + (30 * 4 + 29 + 31 * 6 + day) + "天"); + break; + } + } else { + System.out.println("请问是"+year+"年的第几天:"); + switch (month) { + case 1: + System.out.println(day); + break; + case 2: + System.out.println("第" + (31 + day) + "天"); + break; + case 3: + System.out.println("第" + (31 + 28 + day) + "天"); + break; + case 4: + System.out.println("第" + (28 + 31 * 2 + day) + "天"); + break; + case 5: + System.out.println("第" + (30 + 28 + 31 * 2 + day) + "天"); + break; + case 6: + System.out.println("第" + (30 + 28 + 31 * 3 + day) + "天"); + break; + case 7: + System.out.println("第" + (30 * 2 + 28 + 31 * 3 + day) + "天"); + break; + case 8: + System.out.println("第" + (30 * 2 + 28 + 31 * 4 + day) + "天"); + break; + case 9: + System.out.println("第" + (30 * 2 + 28 + 31 * 5 + day) + "天"); + break; + case 10: + System.out.println("第" + (30 * 3 + 28 + 31 * 5 + day) + "天"); + break; + case 11: + System.out.println("第" + (30 * 3 + 28 + 31 * 6 + day) +" 天"); + break; + case 12: + System.out.println("第" + (30 * 4 + 28 + 31 * 6 + day) + "天"); + break; + + } + } + } +} +``` + +```java +import java.util.Scanner; + +public class task2 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("请输入字母:"); + char word = sc.next().charAt(0); + if (word>='a' && word<='z') { + System.out.println("你输出的为小写字母,"); + switch (word){ + case 'a': + case 'e': + case 'i': + case 'o': + case 'u': + case 'v': + System.out.println("且为声母"); + break; + default: + System.out.println("且为韵母"); + break; + } + } else if (word>='A' && word<='Z') { + System.out.println("你输出的为大写字母"); + } else { + System.out.println("你输出的字符不是字母"); + } + + } +} +``` + diff --git "a/31 \346\235\216\346\254\243/20221205 if\345\222\214switch\347\232\204\345\255\246\344\274\232\344\270\216\344\275\277\347\224\250/\345\233\276\347\211\2072.png" "b/31 \346\235\216\346\254\243/20221205 if\345\222\214switch\347\232\204\345\255\246\344\274\232\344\270\216\344\275\277\347\224\250/\345\233\276\347\211\2072.png" new file mode 100644 index 0000000000000000000000000000000000000000..54a5b64dade4a61fee0e2ff91effa4b5be4def2c Binary files /dev/null and "b/31 \346\235\216\346\254\243/20221205 if\345\222\214switch\347\232\204\345\255\246\344\274\232\344\270\216\344\275\277\347\224\250/\345\233\276\347\211\2072.png" differ diff --git "a/31 \346\235\216\346\254\243/20221206 \345\276\252\347\216\257\350\257\255\345\217\245.md" "b/31 \346\235\216\346\254\243/20221206 \345\276\252\347\216\257\350\257\255\345\217\245.md" new file mode 100644 index 0000000000000000000000000000000000000000..c1afab95339620ca380c431794cb84a9c7a9e1f1 --- /dev/null +++ "b/31 \346\235\216\346\254\243/20221206 \345\276\252\347\216\257\350\257\255\345\217\245.md" @@ -0,0 +1,172 @@ +## for循环 + +循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环 体语句,当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循 环,否则循环将一直执行下去,形 成死循环。 + +#### 格式: + +```java +for (初始化语句;条件判断语句;条件控制语句) { + 循环体语句; +} +``` + +##### 解释: + +###### 初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样 + +###### 条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去 + +###### 循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情 + +###### 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去 + +#### 流程: + +①执行初始化语句 + +②执行条件判断语句,看其结果是true还是false + +​ 如果是false,循环结束 + +​ 如果是true,继续执行 + +③执行循环体语句 + +④执行条件控制语句 + +⑤回到②继续 + +```java +public class test { + public static void main(String[] args) { + for(int a=1; a<=5; a++) { + System.out.println(a); + }//1~5 + System.out.println(" "); + for(int b=5; b>=1; b--) { + System.out.println(b); + }//5~1 + } +} +``` + + + +## while循环 + +#### 格式: + +```java +初始化语句; +while (条件判断语句) { + 循环体语句; + 条件控制语句; +} +``` + +#### 流程: + +①执行初始化语句 + +②执行条件判断语句,看其结果是true还是false + +​ 如果是false,循环结束 + +​ 如果是true,继续执行 + +③执行循环体语句 + +④执行条件控制语句 + +⑤回到②继续 + +```java +public class test1 { + public static void main(String[] args) { + while(a<=5) { + System.out.println("bilibili"); + a++; + }//bilibili*5 + } +} +``` + + + +## do-while循环 + +#### 格式: + +```java +初始化语句; +do { + 循环体语句; + 条件控制语句; +}while(条件判断语句); +``` + +#### 流程: + +① 执行初始化语句 + +② 执行循环体语句 + + ③ 执行条件控制语句 + +④ 执行条件判断语句,看其结果是true还是false + +如果是false,循环结束 + +如果是true,继续执行 + +⑤ 回到②继续 + +```java +public class test2 { + public static void main(String[] args) { + do { + System.out.println("balabala"); + a++; + }while(a<=5); + }//balabala*5 +} + +``` + + + +## 三种循环的区别 + +- #### 三种循环的区别 + +##### for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行) + +##### do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断) + +- #### for循环和while的区别 + +##### 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能 再次被访问到了 + +##### 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束 后,该变量还可以继续使用 + +## 死循环 + +#### 格式: + +```java +for(;;){ + +} + + +while(true){ + +} + + +do { + +} while(true); + +``` + diff --git "a/31 \346\235\216\346\254\243/20221209 Random&\346\225\260\347\273\204.md" "b/31 \346\235\216\346\254\243/20221209 Random&\346\225\260\347\273\204.md" new file mode 100644 index 0000000000000000000000000000000000000000..f7b189e718ae01b6d8ea036b478231664594c649 --- /dev/null +++ "b/31 \346\235\216\346\254\243/20221209 Random&\346\225\260\347\273\204.md" @@ -0,0 +1,196 @@ +## Random + +Random类似Scanner,也是Java提供好的API,内部提供了产生随机数的功能 + +API后续课程详细讲解,现在可以简单理解为Java已经写好的代码 + +#### 步骤: + +```java +import java.util.Random; +public class Demo1Random { +/* + Random : 产生随机数 + 1. 导包 : import java.util.Random; + 导包的动作必须出现在类定义的上面 + 2. 创建对象 : Random r = new Random(); + 上面这个格式里面,r 是变量名,可以变,其他的都不允许变 + 3. 获取随机数 : int number = r.nextInt(10); //获取数据的范围:[0,10) 包 + 括0,不包括10 + 上面这个格式里面,number是变量名,可以变,数字10可以变。其他的都不 + 允许变 + 需求: 产生随机数1-10之间的 +*/ + public static void main(String[] args){ +// 2. 创建对象 + Random r = new Random(); + for(int i = 1; i <= 10; i++){ +// 3. 获取随机数 + int num = r.nextInt(10) + 1; // 1-10 + System.out.println(num); + } + } +} + +``` + +## 数组 + +数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。 + +#### 第一种格式: + +```java +int[] arr; +double[] arr; +char[] arr; +``` + +#### 第二种格式: + +```java +int arr[]; +double arr[]; +char arr[]; +``` + +#### 动态初始化: + +只给定数组的长度,由系统给出默认初始化值 + +在初始化的时候, 需要手动指定数组的长度, 系统会为数组容器分配初始值. + +##### 格式: + +```java +//数据类型[] 数组名 = new 数据类型[数组长度]; +int[] arr = new int[3]; +``` + +等号左边: 等号右边: + +​ int:数组的数据类型 new:为数组开辟内存空间 + +​ []:代表这是一个数组 int:数组的数据类型 + +​ arr:代表数组的名称 []:代表这是一个数组 + +​ 5:代表数组的长度 + +```java +package com.itheima.array; + +public class Demo2Array { + public static void main(String[] args) { + // 数据类型[] 数组名 = new 数据类型[数组的长度]; + // 通过new关键字创建了一个int类型的数组容器, 该容器可以存储5个int类型的整数, 该容器被arr数组变量所记录 + int[] arr = new int[5]; + /* [I@10f87f48 + @ : 分隔符 + [ : 当前的空间是一个数组类型 + I : 当前数组容器中所存储的数据类型 + 10f87f48 : 十六进制内存地址 + 0 1 2 3 4 5 6 7 8 9 a b c d e f + */ + System.out.println(arr); + + byte[] bArr = new byte[3]; + // [B@b4c966a + System.out.println(bArr); + } +} + +``` + +#### 数组元素访问 + +##### 索引: + +每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。 + +这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。 + +##### 格式: + +```java +数组名[索引]; +arr[0] = 11; +``` + +#### 静态初始化 + +在创建数组时,直接将元素确定 + +#### 格式: + +```java +数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...}; +数据类型[] 数组名 = {元素1,元素2,...}; +``` + +## 作业 + +#### 猜数字 + +```java +import java.util.Random; +import java.util.Scanner; + +public class task3 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int count = 1; + Random any = new Random(); + int num2 = any.nextInt(50) + 1; + for(;;){ + System.out.println("请输入数字"); + int num = sc.nextInt(); + count++; + if (num > num2) { + System.out.println("猜大了"); + } else if (num < num2) { + System.out.println("猜小了"); + } else { + System.out.println("猜对了"); + break; + } + if (count>3){ + System.out.println("现在你有两个选项,一是重新开始:re二是结束游戏:bye"); + String num1 = sc.next(); + switch (num1){ + case "re": + count=0; + count++; + break; + case "bye": + System.out.println("感谢您的使用"); + break; + default: + System.out.println("输入错误"); + break; + } + } + } + } +} + +``` + +##### 最大值 + +```java +public class task4 { + public static void main(String[] args) { + int[] num = {112,234,542,98,67}; + int max = num[0]; + for(int i = 1; i < num.length; i++){ + if (num[i]>max){ + max = num[i]; + } + } + System.out.println("最大值为:"+ max); + } +} + +``` + diff --git "a/31 \346\235\216\346\254\243/20221211 \346\225\260\347\273\204\345\220\216\347\273\255.md" "b/31 \346\235\216\346\254\243/20221211 \346\225\260\347\273\204\345\220\216\347\273\255.md" new file mode 100644 index 0000000000000000000000000000000000000000..46a3c99ac70464164e2bfc8efd5965eec69031ae --- /dev/null +++ "b/31 \346\235\216\346\254\243/20221211 \346\225\260\347\273\204\345\220\216\347\273\255.md" @@ -0,0 +1,58 @@ +# 作业 + +闽大举行选美比赛,男生参赛,10个女生当评委,定义一个数组,存放评分,用随机数模拟打分的过程,用程序算出选手的最后得分【去掉一个最高分,再去掉一个最低分,用剩下的分数求平均值】 + +```java +import java.util.Random; + +public class task5 { + public static void main(String[] args) { + int[] beautyScore = new int[10]; + int max = beautyScore[0]; + int min = beautyScore[0]; + int sun = 0; + Random S = new Random(); + for (int a = 0;a < beautyScore.length; a++){ + beautyScore[a] = S.nextInt(100)+1; + System.out.println("评分:" + beautyScore[a]); + sun += beautyScore[a]; + if (max < beautyScore[a]){ + max = beautyScore[a]; + }else if (min > beautyScore[a]){ + min = beautyScore[a]; + } + }System.out.println("最后得分是:" + (((sun-max-min)*1.0)/10)); + } +} + +``` + +## 数组小结 + +#### 得到数组的长度 + +为了定位每个元素,程序会给每个元素一个编号,这个编号从0开始,称为索引,注意,索引最大值,只能是长度-1 ===> length-1 + +```java +// 数组名.length +int[] ages = {1,2,3}; +ages.length; +// 数组长度什么什么用? +//可以用来遍历数组 +``` + +#### 静态初始化 + +```java +//示例 +int[] ages = {18,19,20}; +``` + +#### 动态初始化 + +```java +//示例 +int[] a = new int[3]; +//int[3]// 表示取num这个数组中索引为3的那个元素的值,因为索引从0开始,所以这里3表示第4个元素 +``` + diff --git "a/31 \346\235\216\346\254\243/2img/\345\233\276\347\211\2072.png" "b/31 \346\235\216\346\254\243/2img/\345\233\276\347\211\2072.png" new file mode 100644 index 0000000000000000000000000000000000000000..54a5b64dade4a61fee0e2ff91effa4b5be4def2c Binary files /dev/null and "b/31 \346\235\216\346\254\243/2img/\345\233\276\347\211\2072.png" differ diff --git "a/31 \346\235\216\346\254\243/2img/\345\233\276\347\211\2073.png" "b/31 \346\235\216\346\254\243/2img/\345\233\276\347\211\2073.png" new file mode 100644 index 0000000000000000000000000000000000000000..b17ad14d51deb7103046585e0ab0206177976631 Binary files /dev/null and "b/31 \346\235\216\346\254\243/2img/\345\233\276\347\211\2073.png" differ diff --git "a/31 \346\235\216\346\254\243/2img/\345\233\276\347\211\2074.png" "b/31 \346\235\216\346\254\243/2img/\345\233\276\347\211\2074.png" new file mode 100644 index 0000000000000000000000000000000000000000..17494d812df010f09713db004bf7983c95c69c02 Binary files /dev/null and "b/31 \346\235\216\346\254\243/2img/\345\233\276\347\211\2074.png" differ diff --git "a/31 \346\235\216\346\254\243/2img/\345\233\276\347\211\2075.png" "b/31 \346\235\216\346\254\243/2img/\345\233\276\347\211\2075.png" new file mode 100644 index 0000000000000000000000000000000000000000..b7835a46e9950ccf8d0429ede987c4cff03b3b02 Binary files /dev/null and "b/31 \346\235\216\346\254\243/2img/\345\233\276\347\211\2075.png" differ