diff --git "a/16 \346\236\227\346\210\220\351\270\277/2022122 switch\345\210\244\346\226\255\344\273\245\345\217\212if\350\257\255\345\217\245\345\210\244\346\226\255.md" "b/16 \346\236\227\346\210\220\351\270\277/2022122 switch\345\210\244\346\226\255\344\273\245\345\217\212if\350\257\255\345\217\245\345\210\244\346\226\255.md" new file mode 100644 index 0000000000000000000000000000000000000000..96b8843d1678f0e7930da563abe9df1584cf4af2 --- /dev/null +++ "b/16 \346\236\227\346\210\220\351\270\277/2022122 switch\345\210\244\346\226\255\344\273\245\345\217\212if\350\257\255\345\217\245\345\210\244\346\226\255.md" @@ -0,0 +1,411 @@ +## 1.switch + +执行流程: + +首先计算出表达式的值 + +其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到 + +break就会结 束。 + +最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束 + +掉。 + +### switch案例 + +```java +public static void main(String[] args){ + Scanner sc = new Scanner(System.in); + System.out.println("请输入星期数:"); + int week = sc.nextInt(); + + switch(week){ + case 1: + case 2: + case 3: + case 4: + case 5: + System.out.println("工作日"); + break; + case 6: + case 7: + System.out.println("休息日"); + break; + default: + System.out.println("您的输入有误"); + break; + } + } +} +``` + +## 2.if语句判断 + +#### 2.1 if语句格式1(理解) + +~~~java +格式: +if (关系表达式) { + 语句体; +} +~~~ + +执行流程: + +①首先计算关系表达式的值 + +②如果关系表达式的值为true就执行语句体 + +③如果关系表达式的值为false就不执行语句体 + +④继续执行后面的语句内容 + +示例: + +~~~java +public class IfDemo { + public static void main(String[] args) { + System.out.println("开始"); + + // 如果年龄大于18岁, 就可以上网吧 + int age = 17; + + if(age >= 18){ + // int a = 10; + System.out.println("可以上网吧"); + } + + System.out.println("结束"); + } +} +~~~ + +#### 2.2 if语句格式2(理解) + +~~~java +格式: +if (关系表达式) { + 语句体1; +} else { + 语句体2; +} +~~~ + +执行流程: + +①首先计算关系表达式的值 + +②如果关系表达式的值为true就执行语句体1 + +③如果关系表达式的值为false就执行语句体2 + +④继续执行后面的语句内容 + +示例:奇偶数 + +​ 任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数。 + +~~~java +public class Demo2If { + public static void main(String[] args) { + // 程序判断一个数, 是奇数还是偶数 + int num = 9; + + if(num % 2 == 0){ + System.out.println("偶数"); + }else{ + System.out.println("奇数"); + } + } +} +~~~ + +#### 2.3 if语句格式3(理解) + +~~~java +格式: +if (关系表达式1) { + 语句体1; +} else if (关系表达式2) { + 语句体2; +} +… +else { + 语句体n+1; +} +~~~ + +执行流程: + +①首先计算关系表达式1的值 + +②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值 + +③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值 + +④… + +⑤如果没有任何关系表达式为true,就执行语句体n+1。 + +示例: + +​ 定义一个在0~100之间的变量a, 90~100优秀,80~89良好,70~79中等,60~69及格,0~59请努力加油! + +~~~java +public class Demo3If { + public static void main(String[] args){ + int score = 65; + if(score >= 90 && score <= 100){ + System.out.println("优秀"); + }else if (score >= 80 && score <= 89){ + System.out.println("良好"); + }else if (score >= 70 && score <= 79){ + System.out.println("中等"); + }else if (score >= 60 && score <= 69){ + System.out.println("及格"); + }else if (score >= 0 && score <= 59){ + System.out.println("请努力加油"); + }else{ + System.out.println("成绩有误!"); + } + } +} +~~~ + +#### 2.4 if语句格式3案例(应用) + +需求:小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。 + +分析: + +​ ①小明的考试成绩未知,可以使用键盘录入的方式获取值 + +​ ②由于奖励种类较多,属于多种判断,采用if...else...if格式实现 + +​ ③为每种判断设置对应的条件 + +​ ④为每种判断设置对应的奖励 + +~~~java +import java.util.Scanner; +public class IfTest02 { + public static void main(String[] args){ + // 1. 使用Scanner录入考试成绩 + Scanner sc = new Scanner(System.in); + System.out.println("请输入您的成绩:"); + int score = sc.nextInt(); + // 2. 判断成绩是否在合法范围内 0~100 + if(score >=0 && score <= 100){ + // 合法成绩 + // 3. 在合法的语句块中判断成绩范围符合哪一个奖励 + if(score >= 95 && score <= 100){ + System.out.println("自行车一辆"); + }else if(score >= 90 && score <= 94){ + System.out.println("游乐场一次"); + }else if(score >= 80 && score <= 89){ + System.out.println("变形金刚一个"); + }else { + System.out.println("挨顿揍, 这座城市又多了一个伤心的人~"); + } + }else{ + // 非法的话, 给出错误提示 + System.out.println("您的成绩输入有误!"); + } + } +} +~~~ + +## 作业 + +1. 第一题 某市出租车3km起步价和计费方式:夏利3元,3km以外,每公里2.1元、富康4元,3km以外,每公里2.4元、桑塔纳5元,3km以外,每公里2.7元 + + ```java + package 作业; + + import java.util.Scanner; + + public class A1 { + private static double gls; + + public static void main(String[] args) { + String xl ="夏利"; + String fk ="富康"; + String stn ="桑塔纳"; + Scanner sc = new Scanner(System.in);// 创建扫描器 + System.out.println("请输入车型"); + String cx = sc.next(); + System.out.println("需要前进多少公里"); + double gls = sc.nextDouble(); + double cf; + switch (cx) { + case "夏利": + if (gls <= 3) { + cf = 3; + System.out.println("夏利3公里起步是:" + cf + "元"); + } else { + cf = gls; + cf = (cf - 3) * 2.1 + 3; + System.out.println("夏利" + gls + "公里的价格是:" + cf + "元"); + break; + } + case "富康": + if (gls <= 3) { + cf = 4; + System.out.println("富康3公里起步是:" + cf + "元"); + } else { + cf = gls; + cf = (cf - 3) * 2.4 + 4; + System.out.println("富康" + gls + "公里的价格是:" + cf + "元"); + break; + } + case "桑塔纳": + if (gls <= 3) { + cf = 5; + System.out.println("桑塔纳3公里起步是:" + cf + "元"); + } else { + cf = gls; + cf = (cf - 3) * 2.7 + 5; + System.out.println("桑塔纳" + gls + "公里的价格是:" + cf + "元"); + break; + } + } + // if (cx.equals(xl)) { + // if (gls<=3){ + // cf= 3; + // System.out.println("夏利3公里起步是:"+cf+"元"); + // }else { + // cf = gls; + // cf -=3; + // cf= (cf *= 2.1)+3; + // System.out.println("夏利"+gls+"公里的价格是:"+cf+"元"); + // } + // }else if (cx.equals(fk)){ + // if (gls<=3){ + // cf= 4; + // System.out.println("富康3公里起步是:"+cf+"元"); + // }else { + // cf = gls; + // cf -=3; + // cf= (cf *= 2.4)+4; + // System.out.println("富康"+gls+"公里的价格是:"+cf+"元"); + // } + // }else { + // if (gls<=3){ + // cf= 5; + // System.out.println("桑塔纳3公里起步是:"+cf+"元"); + // }else { + // cf = gls; + // cf -=3; + // cf= (cf *= 2.7)+5; + // System.out.println("桑塔纳"+gls+"公里的价格是:"+cf+"元"); + // } + // } + } + } + + ``` + +2. 第二题 使用switch和if语句算出今天是今年的第几天 + + ```java + package 作业; + + import java.util.Scanner; + + public class A2 { + public static void main(String[] args) { + // 创建扫描器 + Scanner sc = new Scanner(System.in); + int s = 0; + System.out.println("请输入年份"); + int nf= sc.nextInt(); + System.out.println("请输入月份"); + int yf = sc.nextInt(); + System.out.println("请输入天数"); + int ts = sc.nextInt(); + // 1 3 5 7 8 10 12 + // 4 6 9 11 + // 2 + switch (yf){ + case 12: + s += 30; + case 11: + s += 31; + case 10: + s += 30; + case 9: + s += 31; + case 8: + s += 31; + case 7: + s += 30; + case 6: + s += 31; + case 5: + s += 30; + case 4: + s += 31; + case 3: + if (nf % 4 == 0 && nf % 100 !=0 || nf %400 == 0 ){ + s += 29; + }else { + s += 28; + } + case 2: + s += 31; + case 1: + s += ts; + } + System.out.println("输入的年份"+nf+","+yf+","+ts+"过了多少"+s+"天"); + } + } + + ``` + +3. 第三题 用户输入一个字符,判断字符是不是字母,如果是字母判断该字母是声母还是韵母,是大写还是小写,不是字母输出“你输入的字符不是字母” + + ```java + package 作业; + + import java.util.Scanner; + + public class A3 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("请输入一个字符"); + char zf = sc.next().charAt(0); + //ascii A = 65 Z =90 a = 97 z = 122 + if (zf>=65 & zf<=90 | zf>=97 & zf<=122){ + System.out.println(zf+"是字母"); + if (zf>=97 && 122>=zf){ + System.out.println(zf+"字符是小写字母"); + }else if (zf>=65 && 90>=zf){ + System.out.println(zf+"字符是大写字母"); + } + + switch (zf){ + case 'a': + case 'o': + case 'e': + case 'i': + case 'u': + case 'v': + case 'A': + case 'O': + case 'E': + case 'I': + case 'U': + case 'V': + System.out.println(zf+"字符是韵母"); + break; + default: + System.out.println(zf+"字符是声母"); + } + }else { + System.out.println("你输入的字符不是字母"); + } + } + } + + ``` \ No newline at end of file diff --git "a/16 \346\236\227\346\210\220\351\270\277/2022126 for\345\276\252\347\216\257\343\200\201while\345\276\252\347\216\257\344\273\245\345\217\212do while\345\276\252\347\216\257\347\232\204\344\275\277\347\224\250.md" "b/16 \346\236\227\346\210\220\351\270\277/2022126 for\345\276\252\347\216\257\343\200\201while\345\276\252\347\216\257\344\273\245\345\217\212do while\345\276\252\347\216\257\347\232\204\344\275\277\347\224\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..5efbf1e5b0a7ea346d37c73fdf3090eb480e8333 --- /dev/null +++ "b/16 \346\236\227\346\210\220\351\270\277/2022126 for\345\276\252\347\216\257\343\200\201while\345\276\252\347\216\257\344\273\245\345\217\212do while\345\276\252\347\216\257\347\232\204\344\275\277\347\224\250.md" @@ -0,0 +1,254 @@ +## 1. for 循环 + +循环: 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环 体语句,当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循 环,否则循环将一直执行下去,形 成死循环。 + +```java +for (初始化语句;条件判断语句;条件控制语句) { + 循环体语句; +} +``` + +格式解释: + +初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样 + +条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去 + +循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情 + +条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去 + +### 1. for循环的案例 + +输出数据1-5和5-1 + +```java +public class ForTest01 { + public static void main(String[] args) { + //需求:输出数据1-5 + for(int i=1; i<=5; i++) { + System.out.println(i); + } + System.out.println("--------"); + //需求:输出数据5-1 + for(int i=5; i>=1; i--) { + System.out.println(i); + } + } +} + +``` + +### 1.1 for循环的案例 求1-100的数据和以及偶数和 + +```java +public class ForTest03 { + public static void main(String[] args) { + //求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0 + int sum = 0; + //对1-100的数据求和与1-5的数据求和几乎完全一样,仅仅是结束条件不同 + for(int i=1; i<=100; i++) { + //对1-100的偶数求和,需要对求和操作添加限制条件,判断是否是偶数 + if(i%2 == 0) { + sum += i; + } + } + //当循环执行完毕时,将最终数据打印出来 + System.out.println("1-100之间的偶数和是:" + sum); + } +} +``` + +### 1.2 for循环的案例-水仙花数 + +```java +public class Demo6For { +/* +需求:在控制台输出所有的“水仙花数”,要求每行打印2个 +System.out.print (打印内容); 打印后不换行 +System.out.println(打印内容); 打印后换行 +分析: +1. 定义变量count,用于保存“打印过”的数量,初始值为0 +2. 在判定和打印水仙花数的过程中,拼接空格, 但不换行,并在打印后让count变量 ++1,记录打印过的数量 + 3. 在每一次count变量+1后,判断是否到达了2的倍数,是的话,换行。 + */ + public static void main(String[] args){ + // 1. 定义变量count,用于保存“打印过”的数量,初始值为0 + int count = 0; + for(int i = 100; i <= 999; i++){ + int ge = i % 10; + int shi = i / 10 % 10; + int bai = i / 10 / 10 % 10; + if( (ge*ge*ge + shi*shi*shi + bai*bai*bai) == i){ + // 2. 在判定和打印水仙花数的过程中,拼接空格, 但不换行,并在打印后让 + //count变量+1,记录打印过的数量 + System.out.print(i + " "); + count++; + // 3. 在每一次count变量+1后,判断是否到达了2的倍数,是的话,换行 + if(count % 2 == 0){ + System.out.println(); + } + } + } + } +} +``` + +## 2 while循环 + +while 循环的格式 + +```java +初始化语句; +while (条件判断语句) { + 循环体语句; + 条件控制语句; +} +``` + +while循环执行流程: + +①执行初始化语句 + +②执行条件判断语句,看其结果是true还是false + +​ 如果是false,循环结束 + +​ 如果是true,继续执行 + +③执行循环体语句 + +④执行条件控制语句 + + ⑤回到②继续 + +### 2.1 while循环案例-珠穆朗玛峰 + +题目需求:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚 度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度? + +```java +public class WhileTest { + public static void main(String[] args) { + //定义一个计数器,初始值为0 + int count = 0; + //定义纸张厚度 + double paper = 0.1; + //定义珠穆朗玛峰的高度 + int zf = 8844430; + //因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用while +//循环 + //折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度 + while(paper <= zf) { + //循环的执行过程中每次纸张折叠,纸张的厚度要加倍 + paper *= 2; + //在循环中执行累加,对应折叠了多少次 + count++; + } + //打印计数器的值 + System.out.println("需要折叠:" + count + "次"); + } +} +``` + +## 3 do while循环语句 + +格式是: + +```java +初始化语句; +do { + 循环体语句; + 条件控制语句; +}while(条件判断语句); +``` + +执行流程: + +① 执行初始化语句 + +② 执行循环体语句 + +③ 执行条件控制语句 + +④ 执行条件判断语句,看其结果是true还是false + +如果是false,循环结束 + +如果是true,继续执行 + +⑤ 回到②继续 + +示例代码: + +```java +public class DoWhileDemo { + public static void main(String[] args) { + //需求:在控制台输出5次"HelloWorld" + //for循环实现 + for(int i=1; i<=5; i++) { + System.out.println("HelloWorld"); + } + System.out.println("--------"); + //do...while循环实现 + int j = 1; + do { + System.out.println("HelloWorld"); + j++; + }while(j<=5); + } +} +``` + +## 4 三种循环的区别 + +三种循环的区别 + + for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行) + +do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后 判断) + +for循环和while的区别 + +条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了 + + 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束 后,该变量还可以继续使用 + +死循环(无限循环)的三种格式 + +```java +// for循环的死循环格式 +for(;;){ + +} +// while循环的死循环格式 +while(true){ + +} +// do while循环的死循环格式 +do{ + +}while(true); +``` + +## 5 作业 + +1. 第一题 + + + +2. 第二题 + + + +3. 第三题 + + + +4. 第四题 + + + +5. 第五题 + + \ No newline at end of file