流程控制——选择结构
1.流程控制结构
在Java中有三中流程控制结构:顺序结构,选择结构,循环结构,
- 顺序结构:顺序结构就是指程序从上往下依次执行每条语句的结构,中间没有任何的判断和跳转。
- 选择结构:选择结构是根据条件判断的结果来选择执行不同的代码。选择结构可以是细分为单分支结构,双分支结构和多分支结构。Java提供了if控制语句,switch语句来实现选择结构。
- 循环结构:循环结构是根据判断条件来重复地执行某段代码。Java提供了while语句,do-while语句,for语句来实现循环结构。jdk5.0新版本提供了增强for循环,可以以更简洁的方式来遍历数组和集合
选择结构
Java提供了if控制语句,switch语句来实现选择结构
1.if控制语句
if控制语句共有三种不同的形式,分别是单分支结构,双分支结构和多分支结构。
(1)使用if语句实现单分支处理
if语句的格式是:
if(语句){
语句
}
- if是关键字
- 表达式是布尔类型的表达式,其结果为true和false
if语句的流程图是:
if语句的执行步骤如下:
1)对表达式的结果进行判断
2)如果表达式的结果为真,则执行该语句
3)如果表达式的结果为假,则执跳过语句
示例:
请实现成绩大于等于60分,则输出“成绩及格,通过考试。”
步骤:
1)为保存成绩分变量score赋值
2)使用if语句判断成绩是否大于等于60,大于则输出“成绩及格,通过考试。”
public static void main(String[] args){
int score=70;
if(score>=60){
System.out.println("成绩及格,通过考试。");
}
}
输出结果:
成绩及格,通过考试。
(2)使用if-else语句实现双分支处理
if-else语句的语法是:
if(表达式){
语句1
}else{
语句2
}
当表达式为真时,执行语句1;表达式为假时,执行else分支的语句2。
if-else语句的流程图:
if-else语句执行的步骤:
1)对表达式的结果进行判断。
2)如果表达式的结果为true,则执行语句1。
3)如果表达式的结果为false,则执行语句2。
示例
实现成绩大于等于60分,则输出“成绩及格。”;否则输出“成绩不及格。”。
public static void main(String[] args){
int score=50;
if(score>=60){
System.out.println(“成绩及格。”);
}else{
System.out.println(“成绩不及格。”);
}
}
输出结果:
成绩不及格。
(3)使用多分支if语句实现多分支处理
当有多个添加判断时,需要使用多分支if语句来解决。
多分支语句的语法格式:
if(表达式1){
语句1
}else if(表达式2){
语句2
}else{
语句3
}
其中else if语句可以有多个
多分支if语句的执行步骤如下:
1)对表达式1的结果进行判断。
2)如果表达式1的结果为true,则执行语句1,否则判断表达式2的值。
3)如果表达式2的结果为true,则执行语句2,否则执行表达式3。
if 多分支流程图
示例:
如果成绩大于等于90分且小于100分,输出“A级”,否则成绩大于等于80分,输出“B级”,否则成绩大于等于70分,输出“C级”,否则成绩大于等于60分,输出“D级”,低于60分,输出“E级”。
public static void main(String[] args){
int score=85;
if(score>=90&&score<=100){
System.out.println("A级);
}else if(score>=80){
System.out.println("B级");
}else if(score>=70){
System.out.println("C级");
}else if(score>=60){
System.out.println("D级");
}else{
System.out.println("E级");
}
}
输出结果:
B级
2.嵌套if的控制语句
在if控制语句中又包含一个或多个if控制语句的称为嵌套if控制语句。嵌套if控制语句可以通过外层语句和内层语句的协作,来增强程序的灵活性。
嵌套if控制语句的语法格式:
if(表达式1){
if(表达式2){
语句1
}else{
语句2
}
}else{
if(表达式3){
语句3
}else{
语句4
}
}
嵌套if语句的流程图:
嵌套if控制语句的执行步骤:
1)对表达式1的结果进行判断。
2)如果表达式1的结果为true,再对表达式2的结果进行判断。如果表达式2的结果为true,则执行语句1;否则判断表达式2的值。
3)如果表达式1的结果为false,对表达式3的结果进行判断。如果表达式3的结果为true,则执行语句3;否则判断表达式4的值。
示例:
如果今天是周六或周日,则准备外出。如果气温在30°C以上,去游泳;否则就去爬山。
如果今天不是周六或周日,就要工作。如果天气好,就去客户单位谈业务;否则在公司上网查资料。
代码:
public static void main(String[] args){
int day=6; //今天周六
int temp=31; //温度
String wweather="天气好";
if(day=6||day=7){
if(temp>30){
System.out.println("游泳");
}
else{
System.out.println("爬山");
}
}
else{
if(“天气好”.equals(weather)){
System.out.println("去客户单位谈业务");
}
else{
System.out.println("在公司上网查资料");
}
}
}
输出结果:
游泳
3.switch语句
Java还提供了switch语句,用于实现多分支选择结构。它和多分支if控制语句结构在某些情况下可以相互替换。
switch语句的语法格式:
switch(表达式){
case 常量 1:
语句:
break;
case 常量 2:
语句:
break;
.........
default:
语句:
break;
}
注意:如果case后面没有break语句,程序继续执行下面的语句,直到遇到break语句或switch语句结束。
- switch、case、break、default是Java关键字。
- switch后面的表达式只能是整形,字符型和枚举类型。
- case用于与表达式进行匹配。
- break用于终止后续语句的执行。
- default是可选的,当其它条件都不匹配时执行default。
switch语句的执行步骤如下:
- 计算switch后表达式的值。
- 将计算的结果从上往下依次与case后的常量值比较。
- 如果相等就执行该常量后面的代码块,遇到break语句就结束。
- 如果与如何一个case后的常量值都不匹配,就执行default中的语句。
示例:
如果成绩大于等于90分且小于100分,输出“A级”,否则成绩大于等于80分,输出“B级”,否则成绩大于等于70分,输出“C级”,否则成绩大于等于60分,输出“D级”,低于60分,输出“E级”。
代码:
public static void main(String[] args){
int score=75;
switch (score/10){
case 10:
case 9:
System.out.println("A级");
break;
case 8:
System.out.println("B级");
break;
case 7:
System.out.println("C级");
break;
case 6:
System.out.println("D级");
break;
default:
System.out.println("E级");
}
}
输出结果:
C级