程序流程控制
在程序中, 程序运行的流程控制决定程序是如何执行的, 是我们必须掌握的, 主要有三大流程控制语句.
- 顺序控制 (简单)
- 分支控制 (判断)
- 循环控制 (循环)
一. 顺序控制
-
顺序控制介绍
程序从上到下逐行地执行, 中间没有任何判断和跳转.
-
顺序控制举例和注意事项
Java中定义变量时采用合法的 向前引用 如:
public class Test {
int num1 = 12;
int num2 = num1 + 2;
}
错误形式:
public class Test {
int num2 = num1 + 2; //错误
int num1 = 12;
}
二. 分支控制 if-else
- 分支控制 if-else 介绍
让程序有选择的执行, 分支控制有三种
二.1. 单分支
基本语法:
if(条件表达式){
执行代码块; (可以有多条语句.)
}
说明:
当条件表达式为true时, 就会执行 { } 的代码. 如果为false, 就不执行. 特别说明, 如果 { } 中只有一条语句, 则可以不用 { }, 小编建议写上 { }, 这样看起来会更清晰.
- 案例说明
编写一个程序, 可以输入人的年龄, 如果该同志的年龄大于18岁, 则输出 “您年龄大于18, 要对自己的行为负责, 送入监狱”
Scanner input = new Scanner(System.in);
System.out.println("请输入年龄:");
int age = input.nextInt();
if (age > 18) {
System.out.println("您年龄大于18, 要对自己的行为负责, 送入监狱");
}
System.out.println("程序继续...");
}
同样也可以这么写:
Scanner input = new Scanner(System.in);
System.out.println("请输入年龄:");
int age = input.nextInt();
if (age > 18)System.out.println("您年龄大于18, 要对自己的行为负责, 送入监狱");
System.out.println("程序继续...");
}
二.2. 双分支
基本语法:
if(条件表达式){
执行代码块1;
}
else {
执行代码块2;
}
说明:
当条件表达式成立, 即执行代码块1. 否则执行代码块2, 如果 { } 中只有一条语句, 则可以不用 { }, 否则, 不能省略
- 案例说明
编写一个程序, 可以输入人的年龄, 如果该同志的年龄大于18岁, 则输出 “您年龄大于18, 要对自己的行为负责, 送入监狱”, 否则 , 输出 “你的年龄不大, 这次放过你了”
// 思路分析
// 1. 接收输入的年龄, 定义Scanner对象
// 2. 把年龄保存到一个变量, int age
// 3. 使用 if-else 判断, 输出对应信息
Scanner input = new Scanner(System.in);
System.out.println("请输入年龄:");
int age = input.nextInt();
if (age > 18) {
System.out.println("您年龄大于18, 要对自己的行为负责, 送入监狱");
}
else {
System.out.println("你的年龄不大这次放过你");
}
System.out.println("程序继续...");
}
分支可以嵌套使用
Scanner input = new Scanner(System.in);
int x = 7;
int y = 4;
if (x > 5) {
System.out.println("请输入年龄:");
int age = input.nextInt();
if (age > 18) {
if (y > 5) {
System.out.println(x + y);
System.out.println("Jean_z");
} else System.out.println("x is" + x);
} else {
System.out.println("你的年龄不大这次放过你");
}
System.out.println("程序继续...");
}
单分支和双分支练习题
- 定义两个变量int, 判断二者的和,是否能被3又能被5整除, 打印提示信息
// 思路分析
// 1. 定义两个变量 int num1, num2
// 2. 定义一个变量 int sum = num1 + num2;
// 3. sum % 3, 5 后 等于0 说明可以被整除
// 4. 使用 if - else 来提示对应信息
int num1 = 10;
int num2 = 20;
int sum = num1 + num2;
if (sum % 3 == 0 && sum % 5 ==0) {
System.out.println("可以被整除");
} else {
System.out.println("和不能被3或5整除");
}
- 判断一个年份是否是闰年, 闰年的条件是符合下面二者之一: (1)年份能被4整除, 但不能被100整除; (2)能被400整除
// 思路分析
// 1. 定义 int year 保存年
// 2. 年份能被4整除, 但不能被100整除,
// => year % 4 == 0 && year % 100 != 0
// 3. 能被400整除 => year % 400 == 0
// 4. 上面的 2 和 3 是或的关系
int year = 2024;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
System.out.println(year + "是 闰年");
}else {
System.out.println(year + "不是闰年");
}
三.3. 多分支
基本语法:
if (条件表达式1) {
执行代码块1;
}
else if (条件表达式2) {
执行代码块2;
}
…
else {
执行代码块n;
}
- 多分支流程图(重要!)
说明:
- 当条件表达式1成立时, 及执行代码块1,
- 如果条件表达式1不成立时, 才去判断表达式2是否成立
- 如果表达式2成立, 就去执行代码块2
- 以此类推, 如果所有表达式都不成立
- 则执行 else 的代码块, 注意, 只能有一个执行入口
特别说明:
(1) 多分支可以没有else, 如果所有表达式都不成立, 则一个执行入口也没有
(2) 如果有else, 如果所有条件表达式都不成立, 则默认执行else
- 案例演示
输入保国同志的芝麻信用分:
如果:
- 信用分为100分时, 输出 信用极好
- 信用分为(80, 99)时, 输出 信用优秀
- 信用分为(60, 80)时, 输出 信用一般
- 其他情况, 输出 信用 不及格
- 请从键盘输入保国的芝麻信用分, 并加以判断
Scanner input = new Scanner(System.in);
System.out.println("输入保国同志的芝麻信用分:");
int bg = input.nextInt();
if (bg == 100) {
System.out.println("信用分极好");
}else if (bg >= 80 && bg <=99) {
System.out.println("信用优秀");
}else if (bg >=60 && bg < 80) {
System.out.println("信用不及格");
}else {
System.out.println("输入不正确");
}
三.4. 嵌套分支
-
基本介绍
在一个分支结构中又完整的嵌套了另一个完整的分支结构, 里面的分支的结构称为内层分支外面的分支结构称为外层分支, 尽量不超过三层 (可读性不好) -
基本语法
if(){
if(){
//if-else…
}else{
//if-else
}
}
-
应用案例
参加歌手比赛,如果初赛成绩大于8.0进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。【可以让学员先练习下】,输入成绩和性别,进行判断和输出信息。提示: double score; char gender;
接收字符: char gender = scanner.next().charAt(0) //先接收到一个字符串,再接收字符串里的第一个字符
// 思路分析
// 1. 创建Scanner对象, 接收用户输入
// 2. 接收成绩保存到 double score
// 3. 使用 if-else
// 4. 如果进入到决赛, 再接收char gender, 使用if-else输出信息
Scanner input = new Scanner(System.in);
System.out.println("请输入该歌手成绩:");
double score = input.nextDouble();
if (score > 8.0){
System.out.println("请输入性别:");
char gender = input.next().charAt(0);
if (gender == '男' ){
System.out.println("进入男子组决赛");
}else if (gender == '女'){
System.out.println("女子组");
} else {
System.out.println("输入不正确, 重新输入");
}
} else {
System.out.println("sorry, 你被淘汰了");
}