一.流程语句概述
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
流程控制语句分类:
- 顺序结构
- 选择结构
- 循环结构
二. 顺序结构语句
程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
顺序结构流程图:
image.png
三. 选择结构语句 【if、switch】
3.1 if选择结构语句
3.1.1 第一种格式
if语句执行流程:
- 判断关系表达式看其结果是true还是false
1)如果是 true 就执行语句体
2)如果是 false 就不执行语句体
选择结构 if语句第一种格式:
if (关系表达式) {
语句体;
}
//实例
if (a == b) {
System.out.println("a等于b");
}
//或者
if (关系表达式) 语句体;
//实例
if (a == b) System.out.println("a等于b");
执行流程图:
image.png
代码:
package Java_study;
public class if1 {
public static void main(String[] args) {
// 开始
System.out.println("开始");
// 定义两个int类型的变量
int a = 10;
int b = 20;
//判断两个变量是否相等
//10 == 20 => false => 不执行语句体
if (a == b) {
//未执行此预聚体
System.out.println("a等于b");
}
//定义变量
int c = 10;
// 10 == 10 => true => 执行语句体
if (a ==c) {
//a 等于 c
System.out.println("a等于c");
}
//结束
System.out.println("结束");
}
}
测试记录:
开始
a等于c
结束
3.1.2 第二种格式
if语句执行流程:
- 首先判断关系表达式看其结果是true还是false
1)如果是true就执行语句体1
2)如果是false就执行语句体2
选择结构 if语句第二种格式:
if(关系表达式) {
语句体1;
}else {
语句体2;
}
//实例
if (a % 2 == 0) {
System.out.println("a是偶数");
} else {
System.out.println("a是奇数");
}
执行流程图:
image.png
代码:
package Java_study;
public class if2 {
public static void main(String[] args) {
System.out.println("开始");
//定义一个变量
int a = 100;
//重新给a赋值
a = 99;
// a %2 = 1 关系表达式结果为false 执行语句体2
if (a % 2 == 0) {
//语句体1
System.out.println("a是偶数");
} else {
// [执行]语句体2
System.out.println("a是奇数");
}
System.out.println("结束");
}
}
测试记录:
开始
a是奇数
结束
3.1.3 第三种格式
执行流程:
- 首先判断关系表达式1看其结果是true还是false
1)如果是true就执行语句体1
2)如果是false就继续判断关系表达式2看其结果是true还是false
3)如果是true就执行语句体2
4)如果是false就继续判断关系表达式…看其结果是true还是false
5)…(按顺序结构依次判断关系表达式)…
6)如果以上表达式都为false,就执行语句体n+1
选择结构 if语句第三种格式:
if(关系表达式1) {
语句体1;
}else if (关系表达式2) {
语句体2;
}else if (关系表达式3) {
语句体3;
…
else {
语句体n+1;
}
//实例
if (x >= 3) {
y = 2 * x + 1;
// x=-5不满足表达式
} else if (x >= -1 && x < 3) {
y = 2 * x;
// x=-5满足条件 x<-1
} else if (x < -1) {
//执行语句体:y = 2*(-5)-1 = -11
y = 2 * x - 1;
}else{
y = 0;
}
执行流程图:
image.png
代码:
package Java_study;
public class if3 {
public static void main(String[] args) {
System.out.println("开始");
//根据给定的x值,计算出y的值
int x = 5;
x = 0;
x = -5;
//定义变量y
int y;
//x = -5不满足表达式x>= 3
if (x >= 3) {
y = 2 * x + 1;
// x=-5 不满足表达式
} else if (x >= -1 && x < 3) {
y = 2 * x;
// x = -5不满足表达式
} else if (x < -1) {
//执行预聚体: y = 2*(-5)-1 = -11
y = 2* x -1;
} else {
y = 0;
}
System.out.println("y:" + y);
System.out.println("结束");
}
}
测试记录:
开始
y:-11
结束
3.2 switch语句
switch选择结构语法:
- 表达式的取值:byte、short、int、char
1)JDK5以后可以是枚举值
2)JDK7以后可以是String - case后面跟的是要和表达式进行比较的值
- 语句体部分可以是一条或多条语句
- break表示中断,结束的意思,可以结束switch语句
- default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行流程:
- 计算出表达式的值
- 和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
- 如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
选择结构 switch语句格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
...
default:
语句体n+1;
break;
}
//实例
switch (weekDay) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
default:
System.out.println("其他");
break;
}
//case穿透写法
switch (weekDay) {
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;
}
执行流程图:
image.png
代码:
package Java_study;
import java.util.Scanner;
public class switch1 {
public static void main(String[] args) {
// 创建键盘输入数据
Scanner sc = new Scanner(System.in);
// 给出提示
System.out.println("请输入一个整数(1-7):");
int weekDay = sc.nextInt();
// 用switch语句实现判断
switch (weekDay) {
case 1:
System.out.println("星期一");
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:
System.out.println("你输入的数据有误");
break;
}
}
}
测试记录:
请输入一个整数(1-7):
2
星期二
网友评论