流程控制语句(if,switch)
本文最后更新于:1 年前
十四、流程控制语句-if
在程序中我们需用去判断不同的情况做不同的处理,这个时候就需要使用到流程控制语句来处理。我们先来学习最常用的流程控制语句if。
1. 格式
if语句其实有三种部分组成的
三个部分:
①if部分
if(判断表达式){
语句体;
}
② else if部分
else if(判断表达式){
语句体;
}
③else部分
else{
语句体;
}
一个完整的if语句,首先在最前面有且仅有一个if部分,后面会有0个到多个else if语句,最后会有0个或1个else
例如:
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
2. 执行流程
从上到下依次执行判断表达式
结果为true:则执行后面紧跟着的语句体.语句体执行完了整个if语句就结束了.
结果为false:则继续判断下面一个判断表达式
如果所有判断表达式的结果都为false,在有else语句的情况下就执行else里面的语句体,没有的话if语句结束.
例如:
1 |
|
3. 注意
①一旦执行了一个大括号中的语句体,整个if语句就结束了.不可能出现执行两个语句体的情况.
②如果大括号中的语句体只有一行代码的时候可以把大括号省略.但是建议永远不要省略
世界上最遥远的距离就是你在if里,我在else里,似乎一直相伴,却永远无法结伴而行.
4. 练习
1.判断下面代码的输出结果
1 |
|
2.判断下面代码的输出结果 1 5 9
1 |
|
3.按照要求编写代码
让用户键盘录入语文,英语,数学的考试成绩。如果总分小于180分要求输出:由于你的优秀,我想和你家长聊聊。
4.按照要求编写代码
让用户键盘录入语文,英语,数学的考试成绩。如果总分小于180分要求输出:由于你的优秀,我想和你家长聊聊。否则就输出:同九义,何汝秀
5.按照要求编写代码
让用户键盘录入语文,英语,数学的考试成绩。
满足不同的条件输出不同的内容(要求只能输出一种)
条件 | 输出内容 |
---|---|
总分<180 | 叫家长 |
总分>=180并且语数外分数都大于98分 | 恭喜升任五道杠大队长 |
总分>=180但是做不了五道杠的情况下如果语数外分数都大于95分 | 恭喜升任班长 |
总分>=180即做不了五道杠也做不了班长的情况下 | 同九义,何汝秀 |
6.下面代码的执行结果是什么?
1 |
|
答案: 会在编译的时候报错.因为在编译的时候编译器看到了if…else if语句.它认为有可能两个判断都不成立.这样的话b就可能出现没有赋值直接使用的情况.
十五、流程控制语句-switch
使用switch也可以根据判断不同的情况做不同的处理。
1. 格式
1 |
|
switch后面小括号当中只能是下列数据类型:
基本数据类型:byte/short/char/int
引用数据类型:String字符串、enum枚举
例如:
1 |
|
2. 执行流程
从上到下依次看表达式的结果和哪个case后面的值相同,相同就执行那个case后面的语句体,碰到break就结束switch.
如果没有符合要求的case则执行default后面的语句体.
3. 注意事项
①switch可以没有default,但是一般都会加上
②case语句后面可以不加break.但是如果不加break就可能会出现case穿透问题.匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整个switch结束为止;
4. 小思考
switch和if都可以做多种情况的判断,那他们之间有什么区别呢?你觉得谁更灵活?
tips:可以从他们小括号里能写的表达式的类型方面去考虑
if的小括号中是布尔表达式,switch是byte,short…
答案:
if的表达式的布尔表达式,可以进行更复杂条件的判断(例如:值在某个范围内,多个条件同时符合等)而switch的表达式的数据类型只能适合做有限个数的等值判断。所以如果是有限个数的等值判断的话switch有的时候会更方便。其他情况下if会更适合。
5. 练习
1.键盘输入0-6之间的整数,分别代表每周的星期日、星期一、
…、星期六在控制台进行输出。如果用户输入了0-6之外的数提示:请输入0-6之间的整数。
2.一年有12个月,分属于春夏秋冬4个季节,键盘录入一个月份,请用程序实现判断该月份属于哪个季节,并输出。
春:3、4、5
夏:6、7、8
秋:9、10、11
冬:1、2、12