003-Java程序流程控制

打印 上一主题 下一主题

主题 857|帖子 857|积分 2571

3. Java程序流程控制(重点)


  • 程序的三种控制结构

3.1 分支结构 if, switch

3.1.1 if


  • if 分支

    • 根据条件(真或假)来决定执行某段代码。

  • if分支应用场景



  • if 第一种形式


    • 执行流程:
    • 首先判定条件表达式的结果,如果为true执行语句体,为false就不执行语句体。

  • if 第二种形式


    • 执行流程:
    • 首先判定条件表达式的结果,如果为true执行语句体1,为 false 就执行语句体2。

  • if 第三种形式


    • 执行流程:
    • 先判定条件1的值,如果为true则执行语句体1,分支竣事;如果为false则判定条件2的值
    • 如果值为true就执行语句体2,分支竣事;如果为false则判定条件3的值
    • ...
    • 如果没有任何条件为true,就执行else分支的语句体n+1。

  • 总结

    • if分支的作用是什么?
      可以根据条件,选择执行某段程序
    • if分支的写法有几种?




  • 多学一招: if使用的几个常见问题

    • 如果if语句的{}中只有一行代码的环境,{}可以省略不写(但是不推荐省略).
    • if(条件){},()后不能跟“;”否则{}中的代码将不受if的控制了.

  • 训练: 用户登录



  1. package com.itheima.a_if;
  2. import java.util.Scanner;
  3. /**
  4. * @author: LXHYouth
  5. * @date: 2024/3/3 11:39
  6. * @description:
  7. */
  8. /*
  9. if 案例: 用户登录
  10.     需求: 键盘录入用户名和密码
  11.         如果用户名不是1, 程序输出:用户名错误
  12.         如果密码不是2, 程序输出:密码错误
  13.         如果用户名和密码没问题, 程序输出:登录成功
  14.     提示:
  15.         使用Scanner接收用户输入的信息,并使用变量接收
  16.         使用if...else if...else 组织程序逻辑
  17. */
  18. public class Demo03 {
  19.     public static void main(String[] args) {
  20. //        1. 创建一个自己的扫描器
  21.         Scanner sc= new Scanner(System.in);
  22. //        2.提示用户输入用户名
  23.         System.out.print("请输入用户名: ");
  24.         int name = sc.nextInt();
  25. //        提示用户输入密码
  26.         System.out.print("请输入密码: ");
  27.         int passWord= sc.nextInt();
  28.         if(name!=1){
  29.             System.out.println("用户名错误!!!");
  30.         }else if(passWord!=2){
  31.             System.out.println("密码错误!!!");
  32.         }else{
  33.             System.out.println("登录成功!!!");
  34.         }
  35.     }
  36. }
复制代码
3.1.2 switch


  • switch分支

    • 是通过比较值来决定执行哪条分支。


  • switch分支的执行流程

    • 先执行表达式的值,再拿着这个值去与case后的值进行匹配。
    • 与哪个case后的值匹配为true就执行哪个case块的代码,碰到break就跳出switch分支。
    • 如果全部case后的值与之匹配都是false,则执行default块的代码。

  • if跟switch的比较

    • if适合做区间匹配,功能更加强大.
    • switch适合做值匹配,性能更好.

  • 总结:

    • switch分支的格式、执行流程是怎么样的?



    • if、switch的区别有哪些?

      • if适合做区间匹配,功能更加强大.
      • switch适合做值匹配,性能更好.


3.1.3 switch使用时注意事项


  • 使用switch分支的几点注意事项

    • 表达式范例只能是byte、short、int、char,JDK5开始支持罗列,JDK7开始支持String,不支持double、float、long。
    • case给出的值不答应重复,且只能是字面量,不能是变量。
    • 正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
    • 当case中没有写break时,就会开启穿透,后续的case不再匹配,直接执行, 直到碰到下一个break或者整个switch执行完毕后才竣事, 穿透现象是可以加以利用, 优化代码的.

3.1.4 总结


  • 使用switch时有哪些注意事项?


  • 表达式范例可以是byte、short、int、char、罗列、String,不能是double、float、long
  • case给出的值不答应重复,且只能是字面量,不能是变量.
  • 正常使用switch的时候,不要忘记写break,否则会出现穿透现象。

  • switch穿透性能解决什么问题?


  • 存在多个case分支的代码是一样时,可以把代码写到一个case块,其他case块通过穿透性能,穿透到该case块即可,这样可以简化代码。

  • 案例:
  1. package com.itheima.b_switch;
  2. import java.util.Scanner;
  3. /**
  4. * @author: LXHYouth
  5. * @date: 2024/3/3 11:39
  6. * @description:
  7. */
  8. /*
  9. 分支结构 switch
  10.   1. 使用待匹配的值去匹配对应的case值, 执行对应的语句体, 遇到break就结束switch语句
  11.   2. 所有的case都匹配不到,则执行default中的语句体
  12.   switch(待匹配的值){
  13.     case 值1:
  14.         语句体1;
  15.         break;
  16.     case 值2:
  17.         语句体2;
  18.         break;
  19.         ....
  20.     case 值n:
  21.         语句体n;
  22.         break;
  23.     default:
  24.         语句体;
  25.         break;
  26.   }
  27. */
  28. /*
  29. switch注意事项:
  30.     1. 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
  31.     2. case给出的值不允许重复,且只能是字面量,不能是变量。
  32.     3. 正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
  33. switch的case穿透
  34.     当case中没有写break时,就会开启穿透,后续的case不再匹配,直接执行,直到遇到下一个break或者整个switch执行完毕后才结束
  35.     穿透现象是可以加以利用, 优化代码的
  36. */
  37. public class Demo01 {
  38.     public static void main(String[] args) {
  39.         Scanner sc = new Scanner(System.in);
  40.         //需求: 根据今天星期几, 判断是工作还是休息
  41.         System.out.print("请输入今天星期几: ");
  42.         int weekDay= sc.nextInt();
  43.         switch(weekDay){
  44.             case 1:
  45.                 System.out.println("工作");
  46.                 break;
  47.             case 2:
  48.                 System.out.println("工作");
  49.                 break;
  50.             case 3:
  51.                 System.out.println("工作");
  52.                 break;
  53.             case 4:
  54.                 System.out.println("工作");
  55.                 break;
  56.             case 5:
  57.                 System.out.println("工作");
  58.                 break;
  59.             case 6:
  60.                 System.out.println("休息");
  61.                 break;
  62.             case 7:
  63.                 System.out.println("休息");
  64.                 break;
  65.             default:
  66.                 System.out.println("输入错误!!!");
  67.         }
  68.         //需求: 根据定义的月份month,输出对应的季节
  69.         // 3、4、5:春季
  70.         //6、7、8:夏季
  71.         //9、10、11:秋季
  72.         //其它 : 输入月份有误
  73. //        如果发现上下有多个case下的代码完全能相同, 可以利用穿透现象进行简写,只写最后一个case里的代码
  74.         System.out.print("请输入月份: ");
  75.         int month = sc.nextInt();
  76.         switch(month){
  77.             case 12:
  78.             case 1:
  79.             case 2:
  80.                 System.out.println("现在是冬季");
  81.                 break;
  82.             case 3:
  83.             case 4:
  84.             case 5:
  85.                 System.out.println("现在是春季");
  86.                 break;
  87.             case 6:
  88.             case 7:
  89.             case 8:
  90.                 System.out.println("现在是夏季");
  91.                 break;
  92.             case 9:
  93.             case 10:
  94.             case 11:
  95.                 System.out.println("现在是秋季");
  96.                 break;
  97.             default:
  98.                 System.out.println("输入月份有误!!!");
  99.         }
  100.     }
  101. }
复制代码
3.2 循环结构 for, while, do-while

3.2.1 for循环


  • for循环


  • 控制一段代码反复执行很多次。

  • 应用场景




  • for循环格式
  1. for(初始化语句 ; 条件判断语句;  条件变更语句 ) {
  2.             循环体语句 ; //要重复执行的代码
  3. }
复制代码
[code]// 输出3次hello worldfor (    int i = 1;     i

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

悠扬随风

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表