流程控制语句,分支结构:
现实中,我们有三种结构,分别是:顺序、分支、循环
Java中的分支结构:
if ,if else if ,if else、switch语句
if分支的三种语句分别的结构:
if:
if(判断条件){
java语句
}
if ,else if:
if (判断条件一){
java代码
}else if(判断条件){
java代码
}...
if else:
if(判断条件){
java代码
}else{
java代码
}
可以看到java的语法跟C语言差不太多。
例如:判断一分钟内心跳次数是否正常
需求:
心跳次数(60~100)即心跳正常 其余区间提示心跳不正常
代码:
例如:
发红包
需求:给女朋友发一个红包 判断
代码:
利用多分支结构
需求:判断各个分数对应的成绩等级:
代码:
注意代码执行顺序,很简单的。
switch分支:
结构:
switch(变量){
case 值1:
break;
case值2:
...
default:
默认执行代码
}
switch适合做值匹配的分支选择,结构清晰,格式良好。
执行流程:
先执行表达式的值,拿着这个去和case匹配 匹配成功执行其下的代码;
case下遇到break退出switch语句 如果case 都不匹配就执行default(默认情况)下的代码
switch案例:
周一:埋头苦干,解决bug;
周二:请求大牛程序员帮忙;
周三:今晚啤酒、龙虾、小烧烤;
周四:主要帮公司的女程序员解决问题;
周五:今晚吃鸡奋斗;
周六:相亲一手;
周日:郁郁寡欢,首市心情继续上班。
代码:
注意case/default下要写break; 根据需求
if/switch分支各自适合作么业务?
if其实在其功能上远远强于switch语句
if适合做区间匹配 switch适合做值的匹配
switch:值匹配的时候,代码优雅、
switch使用注意事项:
表达式只能是byte char int String(jdk7才引入) 才能值匹配 而float、double long有精度问题 不时候做表达式 不支持。 double a=1; double b=2; a+b~3 只能说是远远接近。
case 的值不允许重复 只能是字面 量 不能是变量
不要忘记写break 以免穿透现象。
针对使用switch的穿透性:
用户输入月份打印对应的天数
代码:
什么时候才有switch穿透现象呢?
switch的case、default 下不写break时会。
switch的穿透效果可以解决什么问题:
当存在多个case对应的值要执行相同的代码时就可以使用,穿透性把流程集中到同一处处理,简化代码。
java循环之for循环:
语法格式:
for(循环变量初始值;判断条件;调整,迭代语句){
循环语句
}
直接举例:
求1~5之间的数据和,并要求结果在控制台输出
利用循环变量,sum累加数据
Java之while 循环:
while循环的格式,执行流程?
while(条件表达式){
循环语句、
迭代语句
}
例子:
什么时候使用for 循环,什么时候使用while循环?
for和while循环功能上完全一样,whilie记得写迭代语句 for 循环可以根据快件方式fori;
使用规范是:知道循环几次使用for循环、不知道循环几次使用while循环。
案例:
珠穆朗玛峰(8848.86米)
需求假设有一张纸厚度为0.1 问折叠多少次达到或者超越珠穆朗玛峰的高度?
代码如下:
结果是27次 0.1* 2^27米
如何解决该案例:
1、定义变量存珠穆朗玛峰的高度、纸张高度;
2、使用while循环 (纸张厚度<山峰高度)每次循环 折依次 纸张厚度扩大一倍(*2)
for和while循环使用总结:
其实while和for 的功能是一样的
知道循环次数使用for循环 不知道循环次数使用while循环。
do-while循环 格式:
do {
循环语句,
迭代语句(调整)} while(循环条件)
例如使用do-while语句打印三遍"hello world"
注意
while和do-while循环一样需要先定义循环变量,{} 里面写循环语句和迭代语句 循环条件后写;
do-while的特点:至少执行一次 一来就会执行{}里的代码。
三种循环的区别:
for循环和while循环是先判断后执行,而do-while循环是先执行后判断。
do-while至少执行一次。
for和while的区别:
1、for循环和while循环的执行流程一模一样;
2、如果知道循环次数选择for循环,不知道循环次数就使用while循环。
3、for循环里的循环变量出了循环体就不能使用了,而while循环的循环变量就可以继续使用。
这是因为局部变量销毁了,出了作用域就没有生命周期了。
while循环的循环变量可以继续使用。
案例:密码验证
假设密码设置为1314
现在需要设置一个密码验证的程序 使用while 无限循环+break
代码如下:
要点:保存正确密码+键盘录入技术+if分支判断+break配合
循环嵌套:
例如:冒泡函数(时间复杂度为O(n**2)的排序算法)
打印四行五列的*:
先确定行数在确定列数。
循环嵌套的特点:
外部循环一次,内循环整体循环一次;
continue/break的区别:
例如:你有老婆了,你犯错了 做五天家务 提三天老婆心软了 就不做了
简而言之:
break直接退出单前循环
countinue结束本次后面要执行的代码,来到循环条件这里判断下次循环是否执行。
Random随机技术:
Random随机数类的生成需要几步,怎么样的?
导包(import java.util.Random;)
Random r=new Random();
使用 需要变量接收... nextInt()生成整数
结合之前的知识:写一个猜数字游戏(1~100)
随机数游戏代码:
猜的方法可以使用二分法(一种查找方式) 针对顺序数据进行分析。时间复杂度O(logn)
每查找一次规模减少一半!!! 2的指数型爆炸
简单总结:
注意break只能在switch和while里面使用。
if分支强大(区间匹配)、
switch 匹配值(值匹配)进行对应的循环语句。switch开始支持byte short int char
jdk5开始支持枚举、jdk7支持string case 后的值不能重复只能是字面量 记得写break 穿透。
以上就是两种分支(if/switch) 三种循环(for/while/do-while)
谢谢大家的观看,感谢支持!!!