程序流程结构——分支
任何程序流程通常只有三种基本结构:
| 结构 | 说明 |
|---|---|
| 顺序结构 | 从上往下逐行执行,每一句都会执行 |
| 分支结构 | 根据条件判断执行不同的语句,并非每句都走 |
| 循环结构 | 符合条件就重复执行一段代码 |
就好比一条河流,从源头流下,途中会有分支,也可能形成循环。
if 语句
if 语句用于在条件满足时执行特定代码块:
if (boolean表达式) {
语句1;
语句2;
// ...
}Code language: JavaScript (javascript)
- 如果
boolean表达式的值为true,则执行{}中的代码 - 如果为
false,则跳过{}中的代码
if-else 语句
满足条件执行一段代码,不满足条件则执行另一段代码:
if (boolean表达式) {
// 条件为 true 时执行
} else {
// 条件为 false 时执行
}Code language: JavaScript (javascript)
if-else if-else 语句
用于多条件判断,满足哪个条件就执行对应的代码块,否则执行 else:
if (条件1) {
// 满足条件1执行
} else if (条件2) {
// 不满足条件1,但满足条件2执行
} else {
// 以上条件都不满足时执行
}Code language: JavaScript (javascript)
示例:多档折扣
满 1000 打八折,满 500 打九折,满 200 打九五折,不满 200 不打折:
if (total >= 1000) {
// 打八折
} else if (total >= 500) {
// 打九折
} else if (total >= 200) {
// 打九五折
} else {
// 不打折
}Code language: JavaScript (javascript)
任何复杂的逻辑都可以通过”顺序 + 分支 + 循环”三种结构组合实现。
练习一:用 if 语句改写结账程序
public static void main(String[] args) {
System.out.println("请输入单价:");
Scanner scan = new Scanner(System.in);
double price = scan.nextDouble();
System.out.println("请输入数量:");
double number = scan.nextDouble();
System.out.println("请输入金额:");
double money = scan.nextDouble();
double total = price * number;
if (total >= 1000) {
System.out.println("返回:" + (money - total * 0.9));
}
if (total < 1000) {
System.out.println("返回:" + (money - total));
}
}Code language: JavaScript (javascript)
注意:这里使用了两个独立的
if语句。如果改用if-else结构会更合理,避免不必要的条件判断。
练习二:判断偶数
public static void main(String[] args) {
System.out.println("请输入一个整数:");
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
if (num % 2 == 0) {
System.out.println("是偶数");
}
if (num % 2 != 0) {
System.out.println("不是偶数");
}
}Code language: JavaScript (javascript)
同样,这里用两个独立
if判断,改为if-else结构更优:
if (num % 2 == 0) {
System.out.println("是偶数");
} else {
System.out.println("不是偶数");
}Code language: JavaScript (javascript)
Previous: 练习——柜台结账系统
Next: IF-ELSE 语句