• day05_流程控制语句


    今日内容

    零、 复习昨日
    一、流程控制语句

    零、 复习昨日

    1 解释/(除法)的特殊点

    • 整数相除取整,不保留小数

    2 i++和++i有什么相同点和不同点

    • 相同点:都会自增1
    • 不同点:++在后i就先使用后自增,++在前i就自增再使用

    3 && 短路与,是如何短路的?

    • & 一错就错,但是后面表达式还会执行
    • && 一错就错,但是如果前面式子已经是false,后面式子不再执行

    4 三目运算的语法结构和执行顺序

    • 语法结构: 表达式 ? 值1 : 值2;
    • 执行顺序:1) 先执行表达式2)根据结果,true执行值13)false时执行值2

    5 解释代码
    byte b = 1;
    b = b + 1; // 这行代码有什么问题?
    程序出现的任何整型都是int,即1是int
    b是byte
    执行加法后,结果的类型是int
    但是赋值给byte类型的变量b,就会出现类型不匹配
    此时会报错,需要强转 b = (byte)(b+1);

    补充

    6 运算符的优先级
    boolean r = a + 1 > b && (a < b || a + b < 0);

    • 先算括号
    • 再算术运算 (先乘除后加减)
    • 再关系运算 (从左至右依次运算)
    • 后逻辑运算 (从左至右依次运算)
    • 最最后是赋值运算

    7 关系式子写法

    数学上,表示一个范围,价格x在1000~2000之间,1000 < x < 2000;
    
    在java中,不能这么写,需要分开写
    x > 1000 && x < 2000
    
    • 1
    • 2
    • 3
    • 4

    一、作业

        public static void main(String[] args) {
            // 华氏温度 = (摄氏温度 × 9/5) + 32
            // 编写一个程序,从用户输入的摄氏温度中将其转换为华氏温度,并显示结果。
            Scanner scanner = new Scanner(System.in);
            System.out.println("输入摄氏温度" );
            double t = scanner.nextDouble();
            double h = (t * 9 / 5) + 32;
    
            System.out.println("对应华氏温度:" + h );
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    二、流程控制语句

    目前程序的执行流程

    • 从main方法开始
    • 方法内每一行从上执行依次执行

    流程控制: 所谓控制就是可以改变原有的顺序,例如

    • 可以跳过某行代码不执行
    • 也可以让某行代码一直执行

    流程控制语句有哪些?

    • 分支语句
      • if
      • if-else
      • if-elseif
    • 选择语句
      • switch[了解]
    • 循环语句
      • while
      • dowhile
      • for

    2.1 分支语句

    2.1.1 if (单分支)

    if是如果的意思,作用用来判断一个条件,从而决定一个代码是否执行

    语法:

    if (布尔表达式) {

    ​ 执行语句;

    }

    作用:

    • 代码执行到if,就会判断表达式,
    • 如果表达式结果是true,就会执行{}内的代码,继续执行后续的
    • 如果表达式结果是false,就会跳过{}内代码不执行,直接执行后续的

    练习: 根据年龄,判断是否可以考驾照,如果年龄大于等于18岁,就输出可以考

        public static void main(String[] args) {
            // 练习: 根据年龄,判断是否可以考驾照,
            // 如果年龄大于等于18岁,就输出可以考
            // int age = 20;
            // if (age > 18) {
            //     System.out.println("可以考驾照" );
            // }
            // System.out.println("你好" );
    
    
            // 升级: 根据年龄,判断是否可以考驾照,
            // 如果年龄大于等于18岁并且小于等于70,就输出可以考
            int age = 120;
            if (age >= 18 && age <= 70) {
                System.out.println("考驾照" );
            }
            System.out.println("你好" );
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    2.1.2 if-else(双分支)

    二选一执行

    package com.qf.ctrl;
    
    /**
     * ---      天道酬勤    ---
     * --- 代码敲烂 月薪过万 ---
     *
     * @author QiuShiju
     * @desc if-else
     */
    public class Demo2 {
    
        public static void main(String[] args) {
    
            /**
             * if-else语句,二选一执行
             * if是如果,else否则,其他的
             * --------------------
             * if (布尔表达式) {
             *     执行语句1;
             * } else {
             *     执行语句2;
             * }
             *---------------------------
             * 1) 执行到if,先执行表达式判断
             * 2) 如果表达式是true就执行if后的{}内的语句1,不执行else里面语句2
             * 3) 如果表达式是false,就跳过if转而else后{}语句2
             */
            int age = 120;
            if (age >= 18 && age <= 70) {
                System.out.println("可以考驾照");
            } else {
                System.out.println("不可以考" );
            }
            System.out.println("-------------------------" );
            // 定义两个变量,输出其中较大值
            int a = 1;
            int b = 2;
            if(a > b) {
                System.out.println("a大,a = " + a );
            } else {
                System.out.println("b大,b = " + b );
            }
    
            System.out.println("-------------------------" );
            // 声明一个int型的数据,判断这个数是否能被2整除,
            // 如果能被2整除,那么输出“这个数是偶数”,
            // 否则输出“这个数是奇数”。
            int x = 8;
            if (x % 2 == 0) {
                System.out.println(x + "是偶数" );
            } else {
                System.out.println(x + "是奇数" );
            }
            System.out.println("-------------------------" );
            // 判断一个整数是否为正数。
            // 如果是正数,打印"这是一个正数",
            // 否则打印"这不是一个正数"。
            int y = 5;
            if (y > 0) {
                System.out.println(y + "是一个正数" );
            } else {
                System.out.println(y + "不是正数" );
            }
            System.out.println("-------------------------" );
            // 定义三个变量,输出其中较大值
            int i = 1;
            int j = 2;
            int k = 3;
            if (i > j) {
                if (i > k) {
                    System.out.println("i最大,i="+i );
                } else {
                    System.out.println("k最大,k="+k );
                }
            } else {
                if (j > k) {
                    System.out.println("j最大,j="+j );
                } else {
                    System.out.println("k最大,k="+k );
                }
            }
    
    
            System.out.println("-------------------------" );
            // 判断一个整数是否为正数负数或者0。
            // 如果是正数,打印"这是一个正数",
            // 如果是0,打印"是0"。
            // 如果是负数,打印"这是一个负数"。
            int q = 1;
            if (q > 0) {
                System.out.println("q是正数" );
            } else {
                if (q < 0) {
                    System.out.println("q是负数" );
                } else {
                    System.out.println("q是0" );
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100

    2.1.3 if-elseif-else(多分支)

    需求: 老人电话,数字按钮变量, 长按1输出打给儿子,长按2输出打给女儿,长按3输出打给老伴儿,长按输出4报警

    package com.qf.ctrl;
    
    /**
     * ---      天道酬勤    ---
     * --- 代码敲烂 月薪过万 ---
     *
     * @author QiuShiju
     * @desc
     */
    public class Demo3 {
    
        public static void main(String[] args) {
            // ---- 使用if-else实现 ----
            // 需求: 老人电话,数字按钮变量,
            // 长按1输出打给儿子,长按2输出打给女儿,
            // 长按3输出打给老伴儿,长按输出4报警
            int num = 1;
            if (num == 1) {
                System.out.println("打给儿子" );
            } else {
                if (num == 2) {
                    System.out.println("打给女儿" );
                } else {
                    if (num == 3) {
                        System.out.println("打给老伴儿" );
                    } else {
                        if (num == 4) {
                            System.out.println("报警" );
                        } else {
                            System.out.println("正常按键..." );
                        }
                    }
                }
            }
            System.out.println("-----------------------------" );
            /**
             * if-elseif: 多分支语句,多选一
             * 语法:
             * if(布尔表达式1) {
             *     执行语句1;
             * } else if(布尔表达式2){
             *     执行语句2;
             * } else if(布尔表达式3) {
             *     执行语句3;
             * } ... {
             *     执行语句n
             * } else {
             *    执行语句;
             * }
             * 执行流程:
             * 1) 先执行到if,判断
             * 2) 结果是true,执行第一个语句,后续else直接跳过不执行
             * 3) 结果是false,执行第二个elseif后判断,结果为true,执行语句2,如果是false
             * 4) 执行第三个elseif后判断,以此类推
             * ...
             * 5) 如果以上所有的判断都不成立,执行最后一个else
             */
            // 需求: 老人电话,数字按钮变量,
            // 长按1输出打给儿子,长按2输出打给女儿,
            // 长按3输出打给老伴儿,长按输出4报警,其他按键输出正常按键...
            int x = 1;
            if (x == 1) {
                System.out.println("打给儿子" );
            } else if (x == 2) {
                System.out.println("打给女儿" );
            } else if (x == 3) {
                System.out.println("打给老伴儿" );
            } else if (x == 4) {
                System.out.println("打给经常" );
            } else {
                System.out.println("正常输出" );
            }
            System.out.println("-----------------------------" );
            // 判断一个正常是 正数,负数,0
            int y = -1;
            if (y > 0) {
                System.out.println("正数" );
            } else if (y < 0) {
                System.out.println("负数" );
            } else {
                System.out.println("等于0" );
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84

    2.2 选择语句

    switch case语句

    • switch选择,转换的意思
    • case 情况,案例的意思

    语法

    switch(数值) {
      case:1
          执行语句;
          break;  
      case:2
          执行语句;
          break; 
    ...
        default:
            执行语句;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    package com.qf.ctrl;
    
    /**
     * ---      天道酬勤    ---
     * --- 代码敲烂 月薪过万 ---
     *
     * @author QiuShiju
     * @desc
     */
    public class Demo5 {
    
        public static void main(String[] args) {
            /**
             * switch是拿着后面的数字和case后的数字做等值比较
             * 相等的话执行其后的代码,其他的不再执行
             * 如果不相等,继续判断下一个case
             * 如果所有case都不相等,执行default内
             */
            // 需求: 老人电话,数字按钮变量,
            // 长按1输出打给儿子,长按2输出打给女儿,
            // 长按3输出打给老伴儿,长按输出4报警,其他按键输出正常按键...
            int num = 1;
            switch (num) {// 此处支持类型byte short int char,及字符串,枚举
                case 1:// case后类型必须和switch后一致
                       // case后只能是定值
                       // case后是冒号
                    System.out.println("打给儿子" );
                    // break; // 其实可写可不写
                             // 但是不写break,会造成case击穿
                            // 即break的作用是用来结束当前switch执行
                case 2:
                    System.out.println("打给女儿" );
                    break;
                case 3:
                    System.out.println("打给你" );
                    break;
                case 4:
                    System.out.println("打给警察" );
                default:
                    System.out.println("正常按键" );
            }
            /**
             * switch整体语法不是重点
             * 但是break这个特性需要记住: 用来结束当前结构执行
             */
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    三、练习

    声明一个int型的数据,判断这个数是否能被2整除,如果能被2整除,那么输出“这个数是偶数”,否则输出“这个数是奇数”。
    
    判断一个整数是否为正数。如果是正数,打印"这是一个正数",否则打印"这不是一个正数"。
    
    给定两个整数,比较它们的大小并打印结果。如果第一个数较大,输出"第一个数较大",如果第二个数较大,输出"第二个数较大",如果两个数相等,输出"两个数相等"。
    
    给定一个成绩,根据成绩的范围打印相应的等级。90及以上为"A级",80-89为"B级",70-79为"C级",60-69为"D级",60以下为"E级"。
    
    编写一个程序,根据用户输入的月份,判断该月份的天数并输出。假设输入的月份范围为1到12。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    package com.qf.ctrl;
    
    import java.util.Scanner;
    
    /**
     * ---      天道酬勤    ---
     * --- 代码敲烂 月薪过万 ---
     *
     * @author QiuShiju
     * @desc 练习
     */
    public class Demo4 {
    
        public static void main(String[] args) {
            // 给定两个整数,比较它们的大小并打印结果。
            // 如果第一个数较大,输出"第一个数较大",
            // 如果第二个数较大,输出"第二个数较大",
            // 如果两个数相等,输出"两个数相等"。
            int a = 2;
            int b = 2;
            if (a > b) {
                System.out.println("a > b" );
            } else if (a < b) {
                System.out.println("b > a" );
            } else {
                System.out.println("a == b" );
            }
    
            System.out.println("--------------" );
            // 给定一个成绩,根据成绩的范围打印相应的等级。
            // 90及以上为"A级",80-89为"B级",70-79为"C级",
            // 60-69为"D级",60以下为"E级"。
            int score = 90;
            if (score >= 90) {
                System.out.println("A级" );
            } else if (score >= 80) {
                System.out.println("B级" );
            } else if (score >= 70) {
                System.out.println("C级" );
            } else if (score >= 60) {
                System.out.println("D级" );
            } else {
                System.out.println("E级" );
            }
    
            System.out.println("--------------" );
            // 编写一个程序,根据用户输入的年份,月份,
            // 判断该月份的天数并输出。考虑平年和闰年情况
            // 假设输入的月份范围为1到12。
    
            // 常识:
            // 闰年: 年份能被4整除,且不能被100整除,或者能被400整除的年份
            // 月份: 13578十腊,31天永不差
            //       其他30天,闰年2月29天,平年28天
            /**
             * 整体思路:
             * 先判断月份,再判断年份
             * 因为只有2月特殊,所有只在2月份里面判断平年闰年
             * 考虑健壮性,即一些特殊情况也有给出提示
             */
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入年份:" );
            int year = scanner.nextInt();
    
            if (year > 0) {
                System.out.print("请输入月份:" );
                int month = scanner.nextInt();
                if (month >= 1 && month <= 12) {
                    if (month == 2) {
                        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                            System.out.println(year+"是闰年,2月,有29天" );
                        } else {
                            System.out.println(year+"是平年,2月,有28天" );
                        }
                    } else if (month == 4 || month == 6 || month == 9 ||month == 11) {
                        System.out.println(year+"年,"+month +"月,有30天" );
                    } else {
                        System.out.println(year+"年,"+month +"月,有31天" );
                    }
                } else {
                    System.out.println("输入合适的月份!" );
                }
            } else {
                System.out.println("年份有误!" );
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87

    四、总结

    以后最常用的是if和ifelse

    敲代码习惯, 不要偷懒,多敲

    关于作业,只看题目自己完成,不要照抄

    如果是要照抄也要自己加注释

  • 相关阅读:
    shell/bash脚本命令的基本使用教程
    C++学习笔记13 - 浅拷贝和深拷贝
    java计算机毕业设计基于springboo+vue的校园二手闲置物品租售平台管理系统
    马斯克对话“虚拟版”马斯克,脑机交互技术离我们有多远
    vulnhub靶机doubletrouble
    深度学习:VGG(Vision Geometrical Group)论文详细讲解
    Html常用标签
    【前端】ECMAScript6从入门到进阶
    Ubuntu系统创建用户并授权sudo权限
    Tensorflow、Pytorch和Ray(张量,计算图)
  • 原文地址:https://blog.csdn.net/weixin_39641494/article/details/133180149