1、程序流程控制课程介绍
流程控制语句 Java提供了一些流程控制语句,来控制程序的执行流程。 顺序结构 (程序默认) 如果你没有写其他的结构,按照代码的先后顺序,一次执行程序中大多数的代码都是这样执行的。 public class Test{ public static void main(String[] agrs){ System.out.println("A"); System.out.println("B"); System.out.println("C"); } }
2、分支结构_if_switch_switch穿透性
if分支 根据判定的结果(真或假)决定执行某个分支的代码 if分支有三种格式 格式1: if(条件表达式){ 语句体; } 格式2: if(条件表达式){ 语句体1; }else{ 语句体2; } 格式3: if(条件表达式1){ 语句体1; }else if(条件表达式2){ 语句体2; }else if(条件表达式3){ 语句体3; } ... else{ 语句体n+1; } 总结 1、if分支的写法有几种,各有什么特点? 格式1: if(条件表达式){ 语句体; } 格式2: if(条件表达式){ 语句体1; }else{ 语句体2; } 格式3: if(条件表达式1){ 语句体1; }else if(条件表达式2){ 语句体2; }else if(条件表达式3){ 语句体3; } ... else{ 语句体n+1; } switch分支 也是匹配条件去执行分支,适合做值匹配的分支选择,结构清晰,格式良好。 switch(表达式){ case 值1: 执行代码...; break; case 值2: 执行代码...; break; .... case 值n-1: 执行代码...; break; default: 执行代码n; } 执行流程: 1.先执行表达式的值,拿着这个值去与case后的值进行匹配。 2.匹配哪个case的值为true就执行哪个case,遇到break就跳出switch分支。 3.如果case后的值都不匹配则执行default代码。 总结 1、switch分支的格式、执行流程是怎么样的? switch(表达式){ case 值1: 执行代码...; break; case 值2: 执行代码...; break; .... case 值n-1: 执行代码...; break; default: 执行代码n; } 2、if、switch分支各自适合做什么业务场景? if其实在功能上远远大于switch。 if合适做区间匹配。 switch适合做:值匹配的分支选择、代码优雅。 switch分支注意事项: 1.表达式类型只能byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、 不支持double、float、long。 2.case给出的值不允许重复,且只能是字面量,不能是变量。 3.不要忘记写break,否则出现穿透现象。 switch的穿透性 如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配), 直到遇到break才跳出分支,这就是switch的穿透性。 switch穿透性案例(月份天数查看器) 需求:用户输入月份可以展示该月份的天数。 1、3、5、7、8、10、12月份是31天 2月份是闰年为29天,非闰年为28天。 4、6、9、11月份是30天。 总结 1、什么情况下会出现switch穿透现象? case中没有写break。 2、switch穿透性能解决什么问题? 存在多个case分支的功能代码是一样时,可以用穿透性把 流程集中到同一处处理,这样可以简化代码。
3、循环结构_for循环_求和_水仙花数
for循环 控制一段代码反复执行很多次。 格式: for(初始化语句;循环条件;迭代语句){ 循环体语句(重复执行的代码); } 示例 for(int i = 0;i < 3;i++){ System.out.println("Hello World"); } 总结 1、for循环格式和执行流程是什么样的? for(初始化语句;循环条件;迭代语句){ 循环体语句(重复执行的代码); } for(int i = 0;i < 3;i++){ System.out.println("Hello World"); } 案例 求和 需求:求1-5之间的数据和,并把求和结果在控制台输出。 分析: 1、定义for循环使用其能够依次访问到:1、2、3、4、5。 for(int i = 1;i <= 5;i++){} 2、在循环外定义一个整数变量sum用来累加这些数据。 int sum = 0; for(int i = 1;i <= 5;i++){ sum += i; } 3、循环结束后,输出求和变量即是结果。 总结 1、如何实现元素求1-5的和? 使用循环控制输出1-5 for(int i = 1; i <= 5; i++){} 2、在循环外定义变量sum累加数据。 sum += i; 案例 求奇数和 需求:求1-10之间的奇数和,并把求和结果在控制台输出 方式一: 1、定义for循环使用其能够依次访问到:1、2、3、4、5、...10。 2、在for循环中,通过if筛选出奇数 for(int i = 1; i <= 10; i++){ if(i % 2 == 1){ // i = 1 3 5 7... } } 3、在循环外定义一个整数变量sum用来累加这些数据。 案例 求奇数和 需求:求1-10之间的奇数和,并把求和结果在控制台输出 方式二: 1、定义for循环使其能够依次访问到:1、3、5、7、9。 for(int i = 1;i <= 10; i+=2){} 2、在循环外定义一个整数变量sum用来累加这些数据。 总结 1、如何实现求奇数和 方式一:在for循环中,通过if筛选出奇数 for(int i = 1; i <= 10; i++){ if(i % 2 == 1){ // i = 1 3 5 7... } } 方式二:直接使用for循环找出奇数。 for(int i = 1;i <= 10; i+=2){} 案例 水仙花数 需求:在控制台输出所有的"水仙花数",水仙花数必须满足如下2个要求: 1、水仙花数是一个三位数 2、水仙花数的个位、十位、百位的数字立方和等于原数 分析: 1、定义一个for循环从"100一直到999"。 2、每次访问到数据后,提取该数据的:个位、十位、百位数字。 3、使用if判断:个位、十位、百位的数字立方和是否等于原数,等于则输出该数据。 153 370 371 407 问题 1、如果还要知道水仙花数的个数怎么办? 在循环外定义一个变量count用于记录水仙花数。 每输出水仙花数时,让count++。 总结 1、如何找出水仙花数? 定义一个for循环从"100一直到999"。 每次访问到数据后,提取该数据的:个位、十位、百位数字。 看各个数的立方和是否等于原数,等于则输出原数据。 2、如何计算出水仙花的个数? 在循环外定义一个变量count用于记录水仙花数。 每输出水仙花数时,让count++。
4、循环结构_while循环_珠穆朗玛峰案例
while循环格式与执行流程 初始化语句; while(循环条件){ 循环体语句(被重复执行的代码); 迭代语句; } 示例 int i = 0; while(i < 3){ System.out.println("Hello World"); i++; } 总结 1、while循环的格式,执行流程是怎么样的? 初始化语句; while(循环条件){ 循环体语句(被重复执行的代码); 迭代语句; } 示例 int i = 0; while(i < 3){ System.out.println("Hello World"); i++; } 2、什么时候用for循环,什么时候用while循环? 功能上是完全一样的,for能解决的while也能解决,反之亦然。 使用规范是:知道循环几次:使用for;不知道循环几次建议使用:while。 案例 珠穆朗玛峰(世界最高峰8848.86米) 需求: 世界最高山峰是珠穆朗玛峰(8848.86米=8848860毫米),假如我有一张足够大的纸, 它的厚度是0.1毫米。请问,折叠多少,可以折成珠穆朗玛峰的高度。 思路:这种不清楚要循环多少次的情况可以选择用while实现。 分析步骤 1、定义变量存储珠穆朗玛峰的高度、纸张的高度。 double peakHeight=8848860; //山峰高度 double paperThickness=0.1; //纸张厚度 2、使用while循环,循环条件是(纸张厚度<山峰高度),内部控制纸张折叠,每次叠一次,纸张厚度为原来两倍,循环外定义计数变量,每折叠一次让该变量+1 int count = 0; while(paperThickness < peakHeight){ paperThickness *= 2; count++; } 总结 1、怎么解决此案例? 定义变量存储珠穆朗玛峰的高度、纸张的高度。 使用while循环,循环条件是(纸张厚度<山峰高度),内部控制纸张折叠,每次叠一次,纸张厚度为原来两倍,循环外定义计数变量,每折叠一次让该变量+1 2、for和while使用总结 1、其实while能做的for都能实现 2、但是如果一开始不知道循环次数的情况下,建议使用while循环解决更专业。
5、循环结构_do_while循环_三种循环的总结
do-while循环 先执行再判断循环条件。 初始化语句: do{ 循环体语句; 迭代语句; }while(循环条件); int i = 0; do{ System.out.println("Hello world"); }while(i < 3); do - while循环的特点:一定会先执行一次循环体。 三种循环的区别 for循环和while循环(先判断后执行) do...while(第一次先执行后判断) for和while的区别: for循环和while循环的执行流程是一摸一样的。 如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。 for循环中,控制循环的变量只在循环中可以使用。while循环中,控制循环的变量在循环后还可以继续使用。 int i = 0; while(i < 3){ System.out.println("Hello World"); i++; } System.out.println(i); for(int i = 0; i < 3; i++){ System.out.println("Hello World"); } System.out.println(i);
6、死循环_循环嵌套_break_continue
死循环 一直循环的执行下去,如果没有干预不会停止下来。 写法 for(;;){ System.out.println("Hello world"); } // 经典做法 while(true){ System.out.println("Hello world"); } do{ System.out.println("Hello world"); }while(true); 案例 密码验证 需求:系统密码是520,请用户不断的输入密码验证,验证不对输出密码错误,验证成功输出欢迎进入系统,并停止程序。 分析: 1、使用while死循环,让用户不断输入数据 2、与密码比对:验证不成功输出密码错误 3、验证成功输出欢迎进入系统,并使用break结束当前循环的执行。 总结 1、死循环可以怎么写? for(;;){ } while(true){ } do{ }while(true); 循环嵌套 循环中又包含循环 for(int i = 0;i < 3;i++){ for(int j = 0;j < 5;j++){ System.out.println(); } } 嵌套循环的特点 外部循环每循环一次,内部循环全部执行完一次。 案例 循环嵌套 需求:在控制台使用*打印出4行5列的矩形 for(int i = 1;i <= 4; i++){ System.out.println("*****"); } 跳转控制语句介绍 break:跳出并结束当前所在循环的执行。 continue:用于跳出当前循环的当次执行,进入下一次循环。 注意事项 break:只能用于结束所在循环,或者结束所在switch分支的执行。 continue:只能在循环中进行使用。
7、案例技术_Random类_猜数字游戏
Random随机数技术 作用:用于在程序中获取随机数的技术。 使用步骤: 1、导包:告诉程序去JDK的哪个包中找随机数技术 2、写一行代码代表得到随机数对象 3、调用随机数的功能获取0-9的随机数 注意: nextInt(n)功能只能生成:0至n-1之间的随机数,不包含n。 Random生成随机数的特点 nextInt(n)功能只能生成:0-(n-1)之间的随机数。 Random生成区间随机数的技巧:减加法。 例如:要生成1-10之间的随机数,程序怎么实现? 1-10 ---> -1 --->(0-9)+1 Random r = new Random(); int number = r.nextInt(10) + 1; 总结 1、Random随机数类生成需要几步,具体是什么样的? 导包:import java.util.Random; Random r = new Random(); int number = r.nextInt(10); 2、Random随机数如何生成65 - 91之间的随机数? 65 - 91 => (0-26) + 65 int number = r.nextInt(27) + 65; 案例 猜数字游戏 需求: 随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏。 分析: 1、随机生成一个1-100之间的数据 2、使用死循环让用户不断提示用户猜测,猜大提示过大,猜小提示过小,猜中结束游戏。
本文含有隐藏内容,请 开通VIP 后查看