5.0程序控制简介
三大程序控制语句:
顺序控制:从上到下运行,无判断和跳转;
分支控制:让程序有选择地运行;分为单分支、双分支、多分支;嵌套分支不要超过三层;
循环控制。
【String转char】
5.1分支控制
【If】
【Switch】
switch细节
1、表达式类型应该和case后面的常量的类型保持一致,或者表达式类型能自动转化为case后面的常量的类型;(这一点和赋值是不一样的,赋值时候是右侧能自动转化为左侧则可以)
2、表达式的返回式需要是:byte short int char enum[枚举] String;
3、case子句中的值必须是常量,不能是变量;
4、default可有可无;没有default且不匹配任何输出,则不执行任何输出即可;
5、break跳出当前switch;如果没有遇到break则会一致执行到switch底,除非遇到下一个break。
【练习题】
第三题使用了穿透,很有意思
【if和switch分别适用的场景分析】
1、如果判断的具体数值不多,而且符合byte short int char enum String这六种类型,则应该使用switch语句;
2、对区间进行判断,结果为boolean类型,使用if。
5.2循环控制
【for】循环
1、for循环格式
For(循环变量初始化;循环的条件;循环变量的迭代){
循环操作;
}
2、for循环的流程
循环圈在右下圆里,逆时针;
计算循环执行了多少次的方法:
第一次循环时i是多少;
最后一次循环的时候i是多少(i等于多少以后跳出循环);
从而计算出循环执行了多少次(最后一次的i - 第一次的i + 1)。
【重要的编程思想】
1、化繁为简
把复杂需求拆解成简单需求然后逐步实现;
2、先死后活(利于思考)
先考虑固定的值,然后转成可以灵活变化的值。
具体eg:把范围开始的值和结束的值,做出变量。也就是把可能变化的具体的值变成变量。
【for循环练习题】
【while】循环
1、while循环基本语法
循环变量初始化;
While(循环条件){
循环体;
循环变量迭代;
}
2、while循环的流程
循环流程和for基本是一样的,那for里的控制参数和while应该是一样的;
【while循环练习题】
【关于for 和while的规律性思考】
1、while 循环流程和for基本是一样的,那for里的控制参数和while应该是一样的;实验验证发现dowhile和他们两个的循环控制参数也是一样的;
2、循环主要分为两类,一类是用循环计数,另一类是实现题中所说的从start到end的数字范围内的对数字的处理。
【do while循环】
1、do while循环基本语法
Do{
循环体;
循环变量迭代;
}
While();
2、do while循环的流程
先执行再判断,所以至少执行一次;
while条件最后有一个分号;
会发现循环圈的方向和while for是一样的,只不过开始的节点不一样;
Ctrl+c退出上一个程序的执行过程;
【多重循环】
1、定义:一个循环嵌套另一个循环;(一般使用两层,最多三层);
2、总循环次数= 外层循环次数 * 内层循环次数;
【多重循环例题】
经典的打印金字塔例题
1、化繁为简
1. 打印一个矩形;
2. 打印半个金字塔;(第一层一颗*,第二层两颗*,第三层三颗*)
3. 打印整个金字塔;(1,3,5,7,9)
4.打印空心金字塔
2、先死后活
5.3不知道什么时候需要跳出循环的break需求
【生成随机数】
1、方法:
Math.random() 直接调用即可;
2、功能:
生成[0,1)内的随机数;
3、应用案例:
生成[0,100]的随机整数;
Int a = (int)(Math.random()*100)+1;
【break基本语法】
1、用于终止某个语句块的执行,一般使用在switch或者循环中,随后会跳出switch或者循环;
2、If break ,则跳出循环,不是跳出if
3、break在多层嵌套的语句块中出现的时候,可以通过标签指明要终止哪一层语句块;若不指明,则默认退出最近的循环体。
4、注意变量的作用范围,可能出了循环就不起作用了;解决办法
1、循环外面定义i,循环改成:for(;i<10;i++)
2、循环外面定义一个n,在循环内部把i赋给n,循环外面输出n(推荐)
【补充语法知识】
1、接受字符串的方法:myScanner.next();
2、字符串内容的比较使用的方法是:equals
Name.equals(“”);//Name里的内容和引号里的内容比较是不是相等;且Name和””能交换位置,第二个推荐,可以避免空指针。
【练习题:登录验证】
我最开始的答案:
其中涉及到的问题:
1、不知道如何接收字符串;
2、不知道如何比较两个字符串是否相等;
3、用一个循环就能解决的问题我写了两个循环;
修改后的答案:
5.4 continue
1、功能:结束本次循环,继续执行下一次循环,continue后面的语句就不执行了;因为continue在循环体里,所以理所应当结束本轮循环也就是本次跳出循环体以后应该执行++操作;
2、依然可以如break一样,使用标签指定跳出哪一层循环;但是设想一种情况,假如跳出了外层循环,那么重新进入内层循环的时候,是需要先进行变量初始化操作的。
5.5 return
1、使用方法:
return使用在方法中,表示跳出所在的方法。假如把方法用在main方法中,则表示退出程序。
5.6本章练习题
这题是一个双分支,不是一个单分支,这很重要。只有只处理一种情况,其余情况不处理的时候才单分支。
java里计算几次方:Math.pow(a,b);
要想输出不换行的需要用print而不是println
学习资源:韩顺平java零基础