程序流程结构——分支

程序流程结构——分支

任何程序流程通常只有三种基本结构:

结构说明
顺序结构从上往下逐行执行,每一句都会执行
分支结构根据条件判断执行不同的语句,并非每句都走
循环结构符合条件就重复执行一段代码

就好比一条河流,从源头流下,途中会有分支,也可能形成循环。

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)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注