Java 流程控制语句——分支结构
Java 流程控制语句大致分为三大结构:顺序结构、分支结构、选择结构。
其中顺序结构是程序默认的执行流程,按代码顺序从上到下依次执行的,就不过多的赘述了。
一、if 条件分支语句
1、if 语句
if 语句(单分支条件语句)
if 语句格式:
if (关系表达式){
语句体;
}
if 语句执行流程:
- 先计算 关系表达式 的值
- 如果 关系表达式的值为 true,则执行语句体
- 如果 关系表达式的值为 false,则不执行语句体
- 最后继续执行后面的其他语句
例1:任意输入一个年龄,判断是否已经成年,大于等于 18 则输出已成年,反之则什么都不输出
import java.util.Scanner; //导入包,使用 Scanner 类实现键盘输入
public class Deom{
public static void main(String[] args){
System.out.println("请输入年龄");
Scanner sc = new Scanner(System.in); //使用 Scanner 类实现键盘输入
int x = sc.nextInt(); //获取键盘输入的内容,并将数值赋值给 x
if(x >= 18){
System.out.println("已成年");
}
}
}
例2:使用 if 语句写一个判断灯的状态,灯没亮用 falg0 标记,灯亮了用 falg1 标记
注:如果用 布尔类型 的变量进行判断,直接把变量写在小括号里面就可以了,因为布尔类型的值不是 true 就是 false
public class Demo2{
public static void main(String[] args){
boolean falg0 = false; //定义一个布尔类型变量 falg0,表示灯没亮
boolean falg1 = true; //定义一个布尔类型变量 falg1,表示灯亮了
if(falg0){
/*
因为 falg0 的值为 false
所以 if 语句不会执行该语句体,
要想执行该语句体就要把 falg0 的值改为 true 才行
*/
System.out.println("灯没亮"); //这句不会被执行输出
}
if(falg1){
System.out.println("灯亮了");
}
}
}
2、if ··· else 语句
if ··· else 语句(二分支条件语句)
if ··· else 语句格式:
if(关系表达式){
语句体1;
}else{
语句体2;
}
if ··· else 语句执行流程:
- 先计算 关系表达式 的值
- 如果 关系表达式的值为 true,则执行语句体1
- 如果 关系表达式的值为 false,则执行语句体2
- 最后继续执行后面的其他语句
例:任意输入一个成绩,判断是否及格,如果是及格了,则输出“恭喜你及格了!”;否则,输出“很遗憾,下次努力!”
import java.util.Scanner; //导入包,使用 Scanner 类实现键盘输入
public class Demo{
public static void main(String[] args) {
System.out.println("请输入成绩:");
Scanner sc = new Scanner(System.in); //使用 Scanner 类实现键盘输入
int score = sc.nextInt(); //获取键盘输入的内容,并将数值赋值给 score
if(score >= 60){
System.out.println("恭喜你,及格了!");
}else{
System.out.println("很遗憾,下次努力!");
}
}
}
3、if ··· else if ··· else 语句
if ··· else if ··· else 语句(多分支条件语句)
if ··· else if ··· else 语句格式:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
······
}else if(关系表达式n-1){
语句体n-1;
}else{
语句体n;
}
if ··· else if ··· else 语句执行流程:
- 先计算 关系表达式1 的值
- 如果为 true 则执行 语句体1,如果为 false 则计算 关系表达式2 的值
- 如果为 关系表达式2 的值 true 则执行 语句体2,如果为 false 则计算 关系表达式3 的值
- ······(以此类推)
- 如果上述的关系表达式都为 false,则执行 语句体n
- 最后继续执行后面的其他语句
例:满分为100分,任意输入一个 0~100 间的成绩,判断其优、良、中、差、不及格(优:成绩大于等于 90;良:成绩大于等于 80;中:成绩大于等于 70;差:成绩大于等于 60;不及格:成绩小于 60)
import java.util.Scanner; //导入包,使用 Scanner 类实现键盘输入
public class Demo{
public static void main(String[] args){
System.out.println("请输入成绩:");
Scanner sc = new Scanner(System.in); //使用 Scanner 类实现键盘输入
int score = sc.nextInt(); //获取键盘输入的内容,并将数值赋值给 score
if (score >= 90) {
System.out.println("你的成绩为:优");
}else if(score >= 80){
System.out.println("你的成绩为:良");
}else if(score >= 70){
System.out.println("你的成绩为:中");
}else if(score >= 60){
System.out.println("你的成绩为:差");
}else {
System.out.println("你的成绩为:不及格");
}
}
}
二、switch 语句
switch 语句(多分支条件语句),和 if ··· else if ··· else 语句类似,但是 if ··· else if ··· else 语句在分支比较多时就显得比较麻烦,程序可读性差且容易出错,所以就采用 switch 语句来处理分支比较多的情况;
switch 语句格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体1;
break;
···
case 值n-1:
语句体n-1;
break;
default
语句体n;
break;
}
switch 语句执行流程:
- 先计算表达式的值
- 用计算出来的值依次和 case 后面的值做比较;
- 如果有相对应的值,就执行相对于的语句,在执行过程中遇到 break 就直接结束流程
- 如果计算出来的值和 case 后面的值都不匹配,则执行 default 中的语句体,然后遇 break 就结束整个 switch 语句流程;
例1:做一个运动周计划,周一:跳绳;周二:跑步;周三:动感单车;周四:拳击;周五:游泳;周六:爬山;周天:休息;周几用数字 1~7 表示,任意输入一个星期数,输出要该天应该做什么运动
注:case 后面只能跟字面量(常量),不能是变量,并且 case 后面跟的值不能重复
import java.util.Scanner; //导入包,使用 Scanner 类实现键盘输入
public class Demo{
public static void main(String[] args) {
System.out.println("请输入星期数:");
Scanner sc = new Scanner(System.in); //使用 Scanner 类实现键盘输入
int week = sc.nextInt(); //获取键盘输入的内容,并将数值赋值给 week
switch (week){
//switch(要匹配的值)
case 1: //case 后面跟被匹配的值
System.out.println("跳绳");
break; //使用 break 直接跳出结构体,结束流程
case 2:
System.out.println("跑步");
break;
case 3:
System.out.println("动感单车");
break;
case 4:
System.out.println("拳击");
break;
case 5:
System.out.println("游泳");
break;
case 6:
System.out.println("爬山");
break;
case 7:
System.out.println("休息");
break;
default: //上面所有情况都不匹配时,就执行 default 的语句体
System.out.println("输入有误");
break;
}
}
}
例2:类似例1,任意输入一个星期数,判断其是工作日还是休息日(周六周天)
注:当 break 被省略时,就会发生 case 穿透;如果程序执行时没有遇到 break 就会继续执行下一个 case 的语句体,直到遇到 break 或 } 时才会结束流程
import java.util.Scanner;
public class test {
public static void main(String[] args) {
System.out.println("请输入星期数:");
Scanner sc = new Scanner(System.in);
int week = sc.nextInt();
switch (week) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6:
case 7:
System.out.println("休息日");
break;
default:
System.out.println("输入有误");
break;
}
}
}
如果文章对各位小伙伴有帮助的话欢迎三连!!!
另外,文章如有错误之处,也欢迎各位大佬批评指正!!!