• 2.4 选择结构语句


    选择结构语句根据是否满足某个条件确定执行哪些操作,分为if条件语句和switch条件语句。

    1. 单分支if语句

    (1)if语句是指如果满足某种条件,就进行某种处理,格式如下。

    1. if(条件) {
    2. // 执行语句
    3. }

    根据上述格式中,判断条件是一个布尔值,当判断条件为true时,{}中的执行语句才会执行。if语句的执行流程如下所示。

    (2)单分支if案例

    编写程序,从键盘上读取一个整数,若该数是偶数,输出该数。

    1. public static void main(String[] args) {
    2. int num;
    3. Scanner input = new Scanner(System.in);
    4. System.out.print("请输入一个整数:");
    5. num = input.nextInt();
    6. if(num % 2 == 0){
    7. System.out.println(num + "是偶数.");
    8. }
    9. }

    2. 双分支if-else语句

    (1)if…else语句是指如果满足某种条件,就进行某种处理,否则就进行另一种处理,格式如下。

    1. if(条件) {
    2. // 执行语句1
    3. }else{
    4. // 执行语句2
    5. }

    在上述格式中,判断条件是一个布尔值。当判断条件为true时,if后面{}中的执行语句1会执行。当判断条件为false时,else后面{}中的执行语句2会执行。执行流程如下所示。

    (2)双分支if-else案例

    编写程序,从键盘上读取一个整数,如果该数字能被2整除则是一个偶数,否则该数字就是一个奇数。

    1. public static void main(String[] args) {
    2. int num;
    3. Scanner input = new Scanner(System.in);
    4. System.out.print("请输入一个整数:");
    5. num = input.nextInt();
    6. if(num % 2 == 0){
    7. System.out.println(num + "是偶数.");
    8. }else {
    9. System.out.println(num + "是奇数.");
    10. }
    11. }

    3. 嵌套的if语句

    (1)嵌套的if语句概述

    if或if-else结构中语句可以是任意合法的Java语句,甚至可以是其他的if或if-else结构,内层的if结构称为嵌套在外层的if结构中,格式如下。

    1. if (判断条件){
    2. if (判断条件){
    3. 执行语句1
    4. }else{
    5. 执行语句2
    6. }
    7. }

    (2)嵌套的if语句案例

    求a、b和c中最大值并将其保存到max中,要求使用一个嵌套的if结构。

    1. public static void main(String[] args) {
    2. int max;
    3. Scanner input = new Scanner(System.in);
    4. System.out.println("请输入a:");
    5. int a = input.nextInt();
    6. System.out.println("请输入b:");
    7. int b = input.nextInt();
    8. System.out.println("请输入c:");
    9. int c = input.nextInt();
    10. if(a > b){ //a大 再比较 c
    11. if(a > c){
    12. max = a;
    13. }else{
    14. max = c;
    15. }
    16. }else{ //b大 再比较 c
    17. if(b > c){
    18. max = b;
    19. }else{
    20. max = c;
    21. }
    22. }
    23. System.out.println("最大值是:" + max);
    24. }

    4. 多分支的if-else语句

    (1)多分支的if-else概述

    如果程序逻辑需要多个选择,可以在if语句中使用一系列的else if语句,这种结构称为阶梯式if-else结构,格式如下。

    1. if (判断条件1){
    2. 执行语句1
    3. } else if (判断条件2){
    4. 执行语句2
    5. }else if (判断条件n) {
    6. 执行语句n
    7. }else {
    8. 执行语句n+1
    9. }

    (2)多分支的if-else语句案例

    输入学生的百分制成绩,打印输出等级的成绩。等级规定为,90分(包括)以上的为“优秀”,80分(包括)以上的为“良好”,70分(包括)以上的为“中等”,60分(包括)以上的为“及格”,60分以下为“不及格”。

    要求:输入语句为“请输入张三同学的成绩:”,其中“张三”为本人姓名。

    1. public static void main(String[] args) {
    2. Scanner input = new Scanner(System.in);
    3. System.out.print("请输入张三的成绩:");
    4. double score = input.nextDouble();
    5. String level = "";
    6. if(score > 100 || score < 0){
    7. System.out.println("输入的成绩不正确。");
    8. System.exit(0);
    9. }else if(score >= 90){
    10. level = "优秀";
    11. }else if(score >= 80){
    12. level = "良好";
    13. }else if(score >= 70){
    14. level = "中等";
    15. }else if(score >= 60){
    16. level = "及格";
    17. }else{
    18. level = "不及格";
    19. }
    20. System.out.println("张三的成绩等级为" + level);
    21. }

    5. 条件运算符

    (1)条件运算符概述

    Java提供了一个三元运算符,可以同时操作三个表达式,三元运算符语法格式如下所示。

    判断条件 ? 表达式1 : 表达式2

    在上述语法格式中,当判断条件为true时,计算表达式1的值作为整个表达式的结果,否则计算表达式2的值作为整个表达式的结果。

    (2)条件运算符案例

    条件运算符可以实现if-else结构,分别用if-else和条件运算符求整数a、b两个数中的最大值。

    • if-else方式实现

    1. public static void main(String[] args) {
    2. int x = 0;
    3. int y = 1;
    4. int max;
    5. if (x > y) {
    6. max = x;
    7. } else {
    8. max = y;
    9. }
    10. System.out.println(max);
    11. }
    • 条件运算符方式实现

    1. public static void main(String[] args) {
    2. int x = 0;
    3. int y = 1;
    4. int max = x > y? x : y;
    5. System.out.println(max);
    6. }

    6. switch语句

    (1)switch语句格式

    switch 条件语句也是一种很常用的选择语句,和if条件语句不同,它只能针对某个表达式的值做出判断,从而决定程序执行哪一段代码。一般格式如下:

    1. switch (expression){
    2. case value1:
    3. statements [break;]
    4. case value2:
    5. statements [break;]
    6. case valueN:
    7. statements [break;]
    8. [default:
    9. statements]
    10. }

    (2)switch语句注意事项

    expression是一个表达式,它的值必须是byte、short、int、char、enum、String。

    case后的value为常量或常量表达式,与表达式类型相一致,expression与value值比较,如果两值相等会执行该case后的语句。

    break语句功能是退出switch语句。

    default为可选子句,如果expression与value都不匹配,则执行default语句。

    (3)switch语句案例

    • 使用switch语句根据给出的数值输出对应中文格式的星期。

    1. public static void main(String[] args) {
    2. int week = 5;
    3. switch (week) {
    4. case 1:
    5. System.out.println("星期一");
    6. break;
    7. case 2:
    8. System.out.println("星期二");
    9. break;
    10. case 3:
    11. System.out.println("星期三");
    12. break;
    13. case 4:
    14. System.out.println("星期四");
    15. break;
    16. case 5:
    17. System.out.println("星期五");
    18. break;
    19. case 6:
    20. System.out.println("星期六");
    21. break;
    22. case 7:
    23. System.out.println("星期七");
    24. break;
    25. default:
    26. System.out.println("输入的数字不正确...");
    27. break;
    28. }
    29. }
    • 使用switch语句根据给出的数值输出对应工作日还是休息日。

    1. public static void main(String[] args) {
    2. int week = 2;
    3. switch (week) {
    4. case 1:
    5. case 2:
    6. case 3:
    7. case 4:
    8. case 5:
    9. System.out.println("今天是工作日");// 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同
    10. break;
    11. case 6:
    12. case 7:
    13. System.out.println("今天是休息日");// 当 week 满足值 6、7 中任意一个时,处理方式相同
    14. break;
    15. }
    16. }

    7. 练习

    编写程序,从键盘输入一个农历月份,输出该月所在的季节。

    春,农历1、2、3月;夏,农历4、5、6月;秋,农历7、8、9月;冬,农历的10、11、12月。

    1. public static void main(String[] args) {
    2. Scanner input = new Scanner(System.in);
    3. System.out.print("请输入农历月份:");
    4. int month = input.nextInt();
    5. String season = "";
    6. switch (month){
    7. case 1:
    8. case 2:
    9. case 3:
    10. season = "春季";
    11. break;
    12. case 4:
    13. case 5:
    14. case 6:
    15. season = "夏季";
    16. break;
    17. case 7:
    18. case 8:
    19. case 9:
    20. season = "秋季";
    21. break;
    22. case 10:
    23. case 11:
    24. case 12:
    25. season = "冬季";
    26. break;
    27. default:
    28. System.out.println("非法月份");
    29. System.exit(0);
    30. }
    31. System.out.println("该月在" + season);
    32. }

  • 相关阅读:
    记录--源码视角,Vue3为什么推荐使用ref而不是reactive
    瑞吉外卖 —— 10、Redis
    Django系列之DRF搜索和过滤
    【ROS2原理9】 QoS - 截止日期、活跃度和寿命
    Flutter高仿微信-视频演示
    c#给多线程传参的几种方式
    vue3+ts项目打包后的本地访问
    阿里云X魔搭社区Create@AI创客松第四届冠军:MumuLab
    BUUCTF 隐藏的钥匙 1
    第三方jar自带logback导致本地日志文件不生成
  • 原文地址:https://blog.csdn.net/lv_soso/article/details/132759326