目录
01、流程概述
02、顺序结构
03、选择结构(分支结构)
选择结构(分支结构)包括:
(1) if选择结构
单分支if选择结构
双分支if-else选择结构
多分支if-else-if选择结构
(2)Switch-case选择结构
(1)单分支if选择结构 If(条件){ //代码块 } (2)双分支If选择结构: if(条件){ //代码块1 }else{ //代码块2 } (3)多分支if选择结构: If(条件1){ //代码块1 }else if(条件2){ //代码块2 }else if(条件3){ //代码块3 }...... }else{ //代码块n }
3.1、if选择结构
3.1.1、单分支If选择结构
(1)语法结构
if(条件){
//代码块
}
(2) 执行规律
- 如果条件为true,执行{}中的代码,执行完成,继续往下执行{}后面的代码
- 如果条件为false,执行{}后面的代码
(3)注意:
- 条件不管多么简单还是多么复杂,都只能是布尔值
(4)案例:
案例1:张浩Java成绩大于90分,老师奖励他iPhone6s ,该怎么做呢?
案例2:
/*
* 张浩Java成绩大于90分,并且音乐成绩大于80分时,
* 或者Java成绩等于100分,音乐成绩大于70分时,
* 老师奖励他,该怎么做呢?
* */案例3:
/*
* 如果张浩Java考试成绩大于90分,老师就奖励他一个iPhone6s
* 否则老师就罚他蹲马步
*/
案例1:
//张浩Java成绩大于90分,老师奖励他iPhone6s ,该怎么做呢?
package com.bdqn.demo02;
public class Demo01 {
public static void main(String[] args) {
//声明一个变量javaScore用来存储张浩的Java成绩
double javaScore = 95;
//根据张浩的java成绩判断他能不能拿到奖励
if(javaScore>=90){
System.out.println("奖励一部iPhone6S");
}
System.out.println("继续努力");
}
}
案例2:
/*
* 张浩Java成绩大于90分,并且音乐成绩大于80分时,
* 或者Java成绩等于100分,音乐成绩大于70分时,
* 老师奖励他,该怎么做呢?
*
* */
package com.bdqn.demo02;
public class Demo02 {
public static void main(String[] args) {
//声明一个变量javaScore用来存储张浩的java成绩
double javaScore = 95;
//声明一个变量musicScore用来存储张浩的音乐成绩
double musicScore = 88;
if(javaScore>90&&musicScore>80||javaScore==100&&musicScore>70){
System.out.println("获得老师奖励的iPhone6S");
}
System.out.println("继续努力");
}
}
案例3:
/*
* 如果张浩Java考试成绩大于90分,老师就奖励他一个iPhone6s
* 否则老师就罚他蹲马步
*/
package com.bdqn.demo02;
public class Demo03 {
public static void main(String[] args) {
double javaScore = 9;
//张浩java成绩满足要求,获得奖励
if(javaScore>=90){
System.out.println("奖励一部iPhone6s");
}
//张浩Java成绩不满足要求,受处罚
if(javaScore<90){
System.out.println("蹲马步");
}
System.out.println("继续努力");
}
}
3.1.2、双分支if-else选择结构
(1)语法结构
/* if(条件){
* //代码块1;
* }else{
* //代码块2;
* }
*/
(2)执行规律
- 如果条件为true,执行代码块1,执行完之后,执行if-else结构后面的代码
- 如果条件为false,执行else{}里面的代码块2,执行完之后,执行if-else结构后面的代码
(3)注意:
- 条件为布尔值
- 如果代码块1只有一条语句,代码块1所在的{}可以省略,但不建议
(4)案例:
案例1:
/*
* 如果张浩Java考试成绩大于等于90分,老师就奖励他一个iPhone6s
* 否则老师就罚他蹲马步
*/
案例1:
/*
* 如果张浩Java考试成绩大于等于90分,老师就奖励他一个iPhone6s
* 否则老师就罚他蹲马步
*/
package com.bdqn.demo02;
public class Demo04 {
public static void main(String[] args) {
/*
* 双分支if选择结构:if-else选择结构
* 语法结构:
* if(条件){
* //代码块1;
* }else{
* //代码块2;
* }
* 执行规律:
* 如果条件为true,执行代码块1,执行完之后,执行if-else结构后面的代码
* 如果条件为false,执行else{}里面的代码块2,执行完之后,执行if-else结构后面的代码
* 注意:
* 条件为布尔值
* 如果代码块1只有一条语句,代码块1所在的{}可以省略,但不建议
*/
double javaScore = 9;
if(javaScore>=90){
System.out.println("奖励iPhone6s");
}else{
System.out.println("蹲马步");
}
System.out.println("继续努力");
}
}
3.1.3、多分支if-else-if选择结构
(1)语法结构
/*
* 多重if选择结构---》if-else-if选择结构
* 语法结构:
* if(条件1){
* //代码块1
* }else if(条件2){
* //代码块2
* }else if(条件3){
* //代码块3
* }....
*
* }else{
* //代码块n
* }
*/
(2)执行规律
- 先判断条件1,如果条件1为true,执行代码块1,执行完之后结束整个if-else-if结构,执行该结构后面的代码
- 如果条件1为false,继续往下判断条件2,如果条件2为true, 执行代码块2,执行完之后结束整个if-else-if结构,执行该结构后面的代码
- 如果条件2为false,继续往下判断条件3,如果条件3为true,执行代码块3,执行完之后结束整个if-else-if结构,执行该结构后面的代码
- ......
- 如果所有的条件都为false,执行else里面的代码块n
(3)注意:
(1)条件为布尔值
(2)else if可以有1个、2个、多个
(3)else也可以省略,如果所有的条件不成立,也没有else,那么整个if-else-if结构不执行
(4)多重if选择结构中各个条件的顺序不可以任意排列,要求从上往下由严格到宽松。
(4)案例
案例1:
/*
* 对学员的考试成绩评测
* 成绩>=80 :良好
* 成绩>=60 :中等
* 成绩<60 :差
*/
案例1:
/*
* 对学员的考试成绩评测
* 成绩>=80 :良好
* 成绩>=60 :中等
* 成绩<60 :差
*/
package com.bdqn.demo02;
public class Demo05 {
public static void main(String[] args) {
double javaScore = 95;
if(javaScore>=80){
System.out.println("良好");
}else if(javaScore>=60){
System.out.println("中等");
}else{
System.out.println("差");
}
System.out.println("继续努力");
}
}
3.1.4、If选择结构的嵌套
(1)语法结构
/* if(条件1){
* //代码块1
* if(条件2){
* //代码块2
* }else{
* //代码块3
* }
* }else{
* //代码块4
* }
*/
(2)执行规律
- 判断条件1,条件1为true,执行代码块1,进一步判断条件2,条件为true,执行代码块2,条件2为false,执行代码块3,执行完之后,结束整个所有的if结构
- 条件1为falae,执行下面else里的代码块4
(3)案例:
案例1:此题使用到Scanner类对象、equals方法
/*
* 学校举行运动会,百米赛跑跑入10 秒内的学生有资格进决赛,
* 根据性别分别进入男子组和女子组*
*/
案例1:此案例使用到了输入语句Scanner、equals等
/*
* 学校举行运动会,百米赛跑跑入10 秒内的学生有资格进决赛,
* 根据性别分别进入男子组和女子组
*/
package com.bdqn.demo02;
import java.util.Scanner;
public class Demo06 {
public static void main(String[] args) {
//创建Scanner类对象
Scanner input = new Scanner(System.in);
System.out.println("请输入你的百米赛跑成绩:");
//从键盘获取数据
double runScore =input.nextDouble();
//根据成绩判断能不能进入决赛
if(runScore<10){
System.out.println("恭喜你,进入百米赛跑决赛");
//根据性别判断进入男子组还是女子组
System.out.println("请输入你的性别:");
//从键盘获取性别数据
String sex =input.next();
/*
* 以下使用到了equals方法,与==类似,但又有所不同,次数不做详细解释
* 对比:
* int a=20;
* int b=20;
* System.out.println(a.equals(b));
* System.out.println(a==b);
* 输出结果都为true,效果类似
*
* 具体解析,请翻看我的专栏:JavaSE,进行寻找equals方法进行查看
* */
//根据性别判断决定进入男子组还是女子组
if(sex.equals("男")){
System.out.println("进入男子组");
}else if(sex.equals("女")){
System.out.println("进入女子组");
}else{
System.out.println("对不起,暂时还没有针对你的性别开展比赛");
}
}else{
System.out.println("很遗憾,不能进入百米赛跑决赛");
}
}
}
1、练习1:
练习1:
/* if选择结构嵌套练习:
* 根据天气决定活动类型:
* 晴天:
* 28°以上:室内游泳
* 28°以下:室外篮球
* 雨天:
* 25°以上:室内羽毛球
* 25°以下:在家敲代码
* 其它天气:
* 在家睡觉
*/
package com.bdqn.demo02;
//导入包
import java.util.Scanner;
public class Demo07 {
public static void main(String[] args) {
//创建Sanner类对象
Scanner input = new Scanner(System.in);
System.out.println("请输入今日天气:");
//从键盘获取数据(天气)
String tianQi = input.next();
System.out.println("请输入今日温度值:");
//从键盘获取数据(温度)
double wenDu = input.nextDouble();
/*
* 字符串的比较使用tianQi.equals("晴天");
* 解析:从键盘获取天气,当获取到的tianQi值为“晴天”时,
通过tianQi.equals("晴天");进行比较,则为true,
反之,当从键盘获取到的天气不是晴天,则为false
*
* */
//判断tianQi.equals("晴天");是否为true
if(tianQi.equals("晴天")){
if(wenDu>=28){
System.out.println("室内游泳");
}else{
System.out.println("室外篮球");
}
}else if(tianQi.equals("雨天")){
if(wenDu>=25){
System.out.println("室内羽毛球");
}else{
System.out.println("在家敲代码");
}
}else{
System.out.println("在家睡觉");
}
}
}
3.2、switch-case选择结构
(1)语法结构
//表达式的值可以是int、short、byte、char、枚举类型、String(JDK7及以后版本可以使用)
* switch(表达式){
* case 常量值1:
* //代码语句;
* break;
* case 常量值2:
* //代码语句;
* break;
* case 常量值3:
* //代码语句;
* break;
* .........
* default:
* //代码语句;
* break;
(2)执行规律
- 根据表达式的值,来与case后面的常量值进行匹配
- 匹配上哪个常量值,就执行该case里面的代码语句,代码语句执行完,执行break,退出整个Switch选择结构,执行Switch选择结构后面的代码
- 如果表达式的值与所有的case常量值不匹配,则执行default里面的代码语句,执行完执行break语句,退出整个Switch选择结构
(3)注意事项
- (1)表达式的值可以是int、short、byte、char、枚举类型、String(JDK7及以后版本可以使用)
- (2)case常量值不能相同
- (3)default语句可以在任意位置,一般来说写在最后,也可以省略不写
- (4)break的作用是结束整个Switch选择结构,如果不写,会造成“case穿透”现象,此现象可以合理使用
- 案例:合理使用“case穿透”现象
// 输出每一个月份属于哪一个季节
// 12/1/2 冬季 3/4/5春季 6/7/8夏季 9/10/11秋季
package com.bdqn.demo02;
public class Demo03 {
public static void main(String[] args) {
// “case穿透”现象
// 输出每一个月份属于哪一个季节
// 12/1/2 冬季 3/4/5春季 6/7/8夏季 9/10/11秋季
int month = 4;
switch (month) {
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
}
}
}
(4)案例:
案例1
/* 韩嫣参加计算机编程大赛
* 如果第一名,参加麻省理工大学组织的1个月夏令营
* 如果第二名,奖励惠普笔记本电脑一部
* 如果第三名,奖励移动硬盘一个
* 否则,不给任何奖励
*/
案例1:
/*
* 韩嫣参加计算机编程大赛
* 如果第一名,参加麻省理工大学组织的1个月夏令营
* 如果第二名,奖励惠普笔记本电脑一部
* 如果第三名,奖励移动硬盘一个
* 否则,不给任何奖励
*/
//使用switch选择结构实现上述需求
package com.bdqn.demo02;
public class Demo02 {
public static void main(String[] args) {
int mingCi = 1;
switch (mingCi) {
case 1:
System.out.println("参加麻省理工大学组织的1个月夏令营");
break;
case 2:
System.out.println("奖励惠普笔记本电脑一部");
break;
case 3:
System.out.println("奖励移动硬盘一个");
break;
default:
System.out.println("不给任何奖励");
break;
}
System.out.println("继续努力");
}
}