006——程序控制语句

程序流程控制语句

分支结构

if分支

  • 根据判定的结果(真或假)决定执行某个分支的代码

if分支的结构

if的第一种格式

执行流程

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

注意:

  • lif 语句中,如果大括号控制的只有一行代码,则大括号可以省略不写。

if的第二种格式

执行流程

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

if的第三种格式

代码演示

package com.bean.branch;

/**
 * @author North
 * @date 2022/9/15 13:19
 * 目标 : 学会使用 if分支结构解决问题,理解其流程
 */
public class IfDemo01 {
    public static void main(String[] args) {
        // 需求:心跳(60-100) 之间是正常的,否则系统提示进一步检查

        // if语句
        int heartBeat = 30;
        if (heartBeat < 60 || heartBeat > 100) {
            System.out.println("你的心跳数据是:" + heartBeat + ", 你可能需要进一步去检查");
        }
        System.out.println("检查结束");


        System.out.println("--------------------------------");

        // if——else语句
        // 需求:发红包
        double money = 599;

        if (money >= 1314) {
            System.out.println("红包发送成功~~~~~~~~~~~");
        } else {
            System.out.println("你自己都没有这么多就别发了~~~~~~~~~~~");


            System.out.println("--------------------------------");

            // if——else——if语句
            // 绩效系统 : 0 —— 60 C , 60 —— 80 B , 80 —— 90 A , 90 —— 100 A+
            int score = 90;
            if (score >= 0 && score <= 60 ) {
                System.out.println("你本月的绩效为: C");
            } else if (score > 60 && score < 80) {
                System.out.println("你本月的绩效为: B");
            } else if (score >= 80 && score < 90) {
                System.out.println("你本月的绩效为: A");
            } else if (score >= 90 && score <= 100) {
                System.out.println("你本月的绩效为: A+");
            } else {
                System.out.println("你输入的数据有误,请重新输入");
            }
        }

    }


}

switch分支

if、switch分支各自适合做什么业务场景?

  • **if****其实在功能上远远强大于switch。
  • if适合做区间匹配。
  • switch适合做:值匹配的分支选择、代码优雅。

代码演示

package com.bean.branch;

/**
 * @author North
 * @date 2022/9/15 15:01
 */
public class SwitchDemo02 {
    public static void main(String[] args) {
        // 目标: 学会使用switch分支结构,理解流程

//        周一:埋头苦干,解决bug                               周五:今晚吃鸡
//        周二:	请求大牛程序员帮忙                             周六:与王婆介绍的小芳相亲
//        周三:今晚啤酒、龙虾、小烧烤                     周日:郁郁寡欢、准备上班。
//        周四: 主动帮助新来的女程序解决bug

        String weekday = "周三";
        switch (weekday) {
            case "周一" :
                System.out.println("埋头苦干,解决bug    ");
                break;
            case "周二" :
                System.out.println("请求大牛程序员帮忙");
                break;
            case "周三" :
                System.out.println("今晚啤酒、龙虾、小烧烤  ");
                break;
            case "周四" :
                System.out.println("主动帮助新来的女程序解决bug");
                break;
            case "周五" :
                System.out.println("今晚吃鸡");
                break;
            case "周六" :
                System.out.println("与王婆介绍的小芳相亲");
                break;
            case "周日" :
                System.out.println("郁郁寡欢、准备上班。");
                break;
            default:
                System.out.println("数据有误!");
        }
    }
}

switch的注意事项

switch分支的注意事项

  • ①表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。

    ②case给出的值不允许重复,且只能是字面量,不能是变量。

    ③不要忘记写break,否则会出现穿透现象。

switch穿透性的应用场景

  • 如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性。

什么情况下会出现switch穿透现象?

  • case中没有写break。

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

  • 存在多个case分支的功能代码是一样时,可以用穿透性把流程集中到同一处处理,这样可以简化代码。

代码演示

package com.bean.branch;

import java.util.Scanner;

/**
 * @author North
 * @date 2022/9/15 15:23
 */
public class SwitchDemo04 {
    public static void main(String[] args) {

//        需求:用户输入月份可以展示该月份的天数。
//        1、3 、5、 7 、 8、 10、 12月份是 31天
//        2月份是闰年为29天、非闰年为28天。
//        4 、6 、9、 11月份 是30天

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你想查看的月份:");
        int month = scanner.nextInt();
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println(month + "月份是31天");
                break;
            case 2:
                System.out.println(month + "月份是闰年为29天、非闰年为28天。");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println(month + "月份是30天");
                break;
            default:
                System.out.println("你输入的数值不再该范围内 , 请重新输入^^");
        }
    }
}

for循环

for循环格式

代码演示

package com.bean.loop;

/**
 * @author North
 * @date 2022/9/16 12:57
 */
public class ForDemo01 {
    public static void main(String[] args) {
        // 目标 : 学会使用for循环,并了解它的执行流程
        // 需求 : 尝试输出3次HelloWorld

        for (int i = 0 ; i < 3 ; i++) {
            System.out.println("HelloWorld");
        }

        System.out.println("-----------------------------");

        for (int i = 0 ; i <= 5 ; i++) {
            System.out.println("HelloWorld");
        }

        System.out.println("-----------案例一----------------");
        // 输出 1 - 5 的和
        int sum = 0;
        for (int number_a = 1 ; number_a <= 5 ; number_a++) {
            sum+= number_a;

        }
        System.out.println("1- 5 的和为:" + sum);


    }
}

案例一

package com.bean.loop;

/**
 * @author North
 * @date 2022/9/16 13:10
 */
public class ForTest01 {
    public static void main(String[] args) {
        // 需求 : 求 1 - 10 之间的奇数和,并在控制台输出结果

        // 定义一个求和的变量
        int sum = 0;
        for (int number = 1 ; number <= 10 ; number++) {
            if (number % 2 == 1) {
                sum+= number;
            }
        }
        System.out.println("1 - 10 之间的奇数和为:" + sum);

        System.out.println("---------方式二----------------");

        int sum_1 = 0;

        for (int number_a = 1 ; number_a <= 10 ; number_a+= 2) {
            sum_1+= number_a;
        }
        System.out.println("1 - 10 之间的奇数和为:" + sum_1);
    }

}

案例二

package com.bean.loop;

/**
 * @author North
 * @date 2022/9/16 13:20
 */
public class ForTest02 {
    public static void main(String[] args) {

//        需求:在控制台输出所有的“水仙花数”,水仙花数必须满足如下2个要求:
//        水仙花数是一个三位数
//        水仙花数的个位、十位、百位的数字立方和等于原数
        int count = 0;
        for (int number = 100 ; number < 1000; number++) {

            // 获取个位数
            int singleDigit = number % 10;

            // 获取十位
            int ten = number / 10 % 10;

            // 获取百位
            int hundreds = number / 100;

            if ((singleDigit * singleDigit * singleDigit) + (ten * ten * ten) + (hundreds * hundreds * hundreds) == number) {
                System.out.print(number + "\t");
                count++;
            }
        }
        System.out.println();
        System.out.println("水仙花的个数是:" + count);

    }
}

while循环

循环格式和执行流程

什么时候用for循环,什么时候用while循环?

  • 功能上是完全一样的,for能解决的while也能解决,反之亦然。
  • 使用规范是:知道循环几次:使用for不知道循环几次建议使用:while

案例一

package com.bean.loop;

/**
 * @author North
 * @date 2022/9/16 18:43
 */
public class WhileDemo02 {
    public static void main(String[] args) {
        // 珠穆朗玛峰的高度 , 纸张折叠的次数
        double mountEverest = 8848.86;
        double paper = 0.1;
        // 定义下折叠的次数
        int count = 0;

        while (paper < mountEverest) {
            paper*= 2;
            count++;
        }

        System.out.println("折叠了:" + count + "次");
        System.out.println("纸张的最终高度:" + paper);

    }
}

do-while循环

循环流程

do-while循环的特点:

  • 一定会先执行一次循环体。

案例一

package com.bean.loop;

/**
 * @author North
 * @date 2022/9/16 18:55
 */
public class DoWhileDemo {
    public static void main(String[] args) {
        // 目标:学会使用do-while循环,并理解其执行流程

        // 先执行再判断
        int number_a = 0;
        do {
            System.out.println("Hello World");
            number_a++;
        } while (number_a < 3);
    }
}

三种循环的区别

  • for循环 和 while循环(先判断后执行)
  • do…while (第一次先执行后判断)
  • for循环和while循环的执行流程是一模一样的。
  • 如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
  • for循环中,控制循环的变量只在循环中可以使用。While循环中,控制循环的变量在循环后还可以继续使用。

死循环

  • 一直循环的执行下去,如果没有干预不会停止下来。

案例

package com.bean.loop;

import java.util.Scanner;

/**
 * @author North
 * @date 2022/9/17 15:00
 */
public class DeadForDemo01 {
    public static void main(String[] args) {
        // 目标:学会定义死循环
//        for ( ; ; ) {
//            System.out.println("Hello World");
//        }

//        while (true) {
//            System.out.println("Hello World");
//        }

        System.out.println("-------------------------");

        int okPassword = 520;

        Scanner scanner = new Scanner(System.in);

        while (true) {
            System.out.println("请输入密码:");
            int password = scanner.nextInt();

            if (password == okPassword) {
                System.out.println("密码正确^^");
                break;
            } else {
                System.out.println("请重新输入密码:");
            }
        }

    }
}

循环嵌套

  • 循环中又包含循环

嵌套循环的特点

  • 外部循环每循环一次,内部循环全部执行完一次。

案例一

package com.bean.loop;

/**
 * @author North
 * @date 2022/9/17 15:14
 */
public class NestedDemo {
    public static void main(String[] args) {
        // 理解嵌套循环的执行流程

        for (int number_a = 0 ; number_a < 5 ; number_a++) {
            for (int number_b = 0 ; number_b < 3 ; number_b++ ) {
                System.out.println("冲华水!!!!!!!!");
            }
            System.out.println("----------------------------------------");
        }


        System.out.println("_________________________________________________________");
        System.out.println("----------------------案例二-------------------------------");

        for (int number_c = 0; number_c < 10 ; number_c++ ) {
            for (int number_d = 0 ; number_d < 5 ; number_d++) {
                System.out.print("*");
            }
            // 换行
            System.out.println();
            System.out.println("--------------------------------------------");
        }
    }
}

跳转关键词

  • break , continue

break

  • 跳出并结束当前所在循环的执行。

continue

  • 用于跳出当前循环的当次执行,进入下一次循环。

注意事项

  • break : 只能用于结束所在循环, 或者结束所在switch分支的执行。
  • continue : 只能在循环中进行使用

案例

package com.bean.loop;

/**
 * @author North
 * @date 2022/9/17 15:29
 */
public class BreakDemo {
    public static void main(String[] args) {
        // 目标 : 学会使用break语句

        for (int number = 0 ; number < 5 ; number++) {

            if (number == 3) {                continue;
            }
            System.out.println("加油" + number);
        }
    }
}

Random

作用

  • 用于在程序中获取随机数的技术。

使用步骤

  • 导包:告诉程序去JDK的哪个包中找随机数技术
  • 写一行代码代表得到随机数对象
  • 调用随机数的功能获取0-9的随机数

Random生成随机数的特点

  • nextInt(n)功能只能生成:0 – (n-1)之间的随机数。

**Random****生成区间随机数的技巧:减加法。

案例

package com.bean.random;

import java.util.Random;
import java.util.Scanner;

/**
 * @author North
 * @date 2022/9/17 15:52
 */
public class RandomDemo02 {
    public static void main(String[] args) {
        // 目标 : 理解并编写参数字游戏

        // 1 . 随机一个幸运号码 1 —— 100 之间
        Random random = new Random();
        int luckNumber = random.nextInt(100) + 1;

        // 让用户输入数据猜测
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要猜测的数字:");
        while (true) {
            int number = scanner.nextInt();
            // 判断这个猜测的号码与幸运号码的大小情况
            if (number > luckNumber) {
                System.out.println("你输入的数字过大 , 请重新输入:");
            } else if(number < luckNumber){
                System.out.println("你输入的数字过小 , 请重新输入:");
            } else {
                System.out.println("恭喜你 ! 输入正确");
                // 输入正确 , 直接跳出死循环
                break;
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值