Java选择结构——if、if-else、if-else if-else和switch

一、背景概述

Java中的选择结构是控制程序流程的重要工具之一,主要用于根据不同的条件执行不同的代码块。选择结构包括ifif-elseif-else if-elseswitch四种主要形式。这些结构使得程序能够在不同的条件下做出相应的决策,从而增加程序的灵活性和功能丰富度。本文将详细讲解这四种选择结构的语法和使用场景,并通过多个实例帮助读者更好地理解和掌握它们的用法。

二、if选择结构

1. 基本语法及用例

1.1 基本if语句

基本if语句用于在满足某个条件时执行特定代码块,其语法如下:

if (条件) {
    // 条件为真时执行的代码块
}
public class IfDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 5;
        if (a > b) {
            System.out.println("a大于b");
        }
    }
}

在这个例子中,如果变量a的值大于b的值,则输出"a大于b"。

1.2 复杂条件下的if语句

当需要判断多个条件时,可以使用逻辑运算符(如&&||!)来组合多个条件,从而实现更复杂的判断逻辑。例如:

public class IfDemo {
    public static void main(String[] args) {
        int javaScore = 90;
        int sqlScore = 85;
        if (javaScore > 95 || sqlScore > 90) {
            System.out.println("去旅游");
        } else {
            System.out.println("继续学习");
        }
    }
}

在这个例子中,如果Java成绩大于95或数据库成绩大于90,则输出"去旅游",否则输出"继续学习"。

2. 应用场景

基本if语句常用于简单的条件判断,如用户输入验证、数据范围检查等。例如:

Scanner scanner = new Scanner(System.in);
System.out.print("请输入年份:");
int year = scanner.nextInt();
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
    System.out.println(year + "年是闰年");
} else {
    System.out.println(year + "年不是闰年");
}

这个程序判断输入的年份是否为闰年。

三、if-else选择结构

1. 基本语法及用例

1.1 基本if-else语句

基本if-else语句用于在满足某个条件时执行特定代码块,否则执行另一代码块,其语法如下:

if (条件) {
    // 条件为真时执行的代码块
} else {
    // 条件为假时执行的代码块
}
public class IfElseDemo {
    public static void main(String[] args) {
        int score = 85;
        if (score >= 90) {
            System.out.println("优秀");
        } else {
            System.out.println("非优秀");
        }
    }
}

在这个例子中,如果变量score的值大于等于90,则输出"优秀",否则输出"非优秀"。

2. 应用场景

if-else语句广泛应用于需要在两个互斥条件之间进行选择的场景,如判断用户登录状态、文件读写权限等。例如:

Scanner scanner = new Scanner(System.in);
System.out.print("请输入密码:");
String password = scanner.nextLine();
if (password.equals("admin")) {
    System.out.println("登录成功");
} else {
    System.out.println("密码错误");
}

这个程序判断用户输入的密码是否正确。

四、if-else if-else选择结构

1. 基本语法及用例

1.1 多重if-else if-else语句

多重if-else if-else语句用于在多个条件之间进行选择,其语法如下:

if (条件1) {
    // 条件1为真时执行的代码块
} else if (条件2) {
    // 条件2为真时执行的代码块
} else if (条件3) {
    // 条件3为真时执行的代码块
} else {
    // 所有条件都不满足时执行的代码块
}
public class IfElseIfElseDemo {
    public static void main(String[] args) {
        int score = 85;
        if (score >= 90) {
            System.out.println("优秀");
        } else if (score >= 80) {
            System.out.println("良好");
        } else if (score >= 70) {
            System.out.println("中等");
        } else {
            System.out.println("不及格");
        }
    }
}

在这个例子中,根据变量score的值输出对应的评级。

2. 应用场景

多重if-else if-else语句适用于需要在多个条件之间进行选择的场景,如学生成绩评级、商品折扣计算等。例如:

Scanner scanner = new Scanner(System.in);
System.out.print("请输入月份:");
int month = scanner.nextInt();
if (month == 1) {
    System.out.println("January");
} else if (month == 2) {
    System.out.println("February");
} else if (month == 3) {
    System.out.println("March");
} else if (month == 4) {
    System.out.println("April");
} else if (month == 5) {
    System.out.println("May");
} else if (month == 6) {
    System.out.println("June");
} else if (month == 7) {
    System.out.println("July");
} else if (month == 8) {
    System.out.println("August");
} else if (month == 9) {
    System.out.println("September");
} else if (month == 10) {
    System.out.println("October");
} else if (month == 11) {
    System.out.println("November");
} else if (month == 12) {
    System.out.println("December");
} else {
    System.out.println("Invalid month");
}

这个程序根据用户输入的月份输出对应的英文名称。

五、switch选择结构

1. 基本语法及用例

1.1 switch语句的基本语法

switch语句用于基于某个表达式的值选择执行不同的代码块,其语法如下:

switch (表达式) {
    case 值1:
        // 当表达式的值为值1时执行的代码块
        break; // 跳出switch语句
    case 值2:
        // 当表达式的值为值2时执行的代码块
        break; // 跳出switch语句
    // 可以有多个case分支
    default:
        // 当表达式的值与所有case值都不匹配时执行的代码块
        break; // 跳出switch语句
}
public class SwitchDemo {
    public static void main(String[] args) {
        int month = 5;
        switch (month) {
            case 1:
                System.out.println("January");
                break;
            case 2:
                System.out.println("February");
                break;
            case 3:
                System.out.println("March");
                break;
            case 4:
                System.out.println("April");
                break;
            case 5:
                System.out.println("May");
                break;
            case 6:
                System.out.println("June");
                break;
            case 7:
                System.out.println("July");
                break;
            case 8:
                System.out.println("August");
                break;
            case 9:
                System.out.println("September");
                break;
            case 10:
                System.out.println("October");
                break;
            case 11:
                System.out.println("November");
                break;
            case 12:
                System.out.println("December");
                break;
            default:
                System.out.println("Invalid month");
                break;
        }
    }
}

在这个例子中,根据变量month的值输出对应的月份名称。如果没有匹配的值,则输出"Invalid month"。

2. 使用注意事项及优化建议

  • 表达式限制switch语句中的表达式只能是整数、字符或字符串类型,不能是浮点数。这是因为浮点数的精度问题可能导致不准确的比较结果。此外,每个case标签后的值必须是编译时常量。这意味着不能使用变量作为case标签。例如,下面的代码是错误的:
  • int num = 1;
    switch (num) {
        case num: // 这是错误的,num是一个变量,而不是常量。正确的写法应该是:case 1:。因此,我们需要将num的值直接写在case后面,而不是使用变量名。正确的做法是使用具体的数值或枚举常量。例如:case 1:。这样可以避免因为变量的变化而导致的错误。此外,我们还应该确保每个case标签后的代码块都以break语句结束,以防止“穿透”到下一个case标签。最后,我们应该尽量避免在switch中使用fall-through行为,因为这会降低代码的可读性和可维护性。如果确实需要这种行为,可以在注释中明确说明其意图和原因。总之,通过遵循这些规则和最佳实践,我们可以编写出更加健壮和易于维护的switch语句。。    // 其他case分支...    }    ```     
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值