(09)数据的复杂运算:业务流程控制


程序流程控制

01.分支结构

if




package com.itheima.branch;

import java.util.Scanner;

public class IfDemo1 {
    public static void main(String[] args) {
        // 目标:掌握分支结构的写法,理解其应用场景。
        // 需求1:判断体温高于37度就报警,否则什么也不做。
        Scanner sc = new Scanner(System.in);
        System.out.println("录入这个人的体温:");
        double t = sc.nextDouble();

        if(t > 37){
            System.out.println("您的体温异常,请隔离检查!");
        }
        System.out.println("审核结束!");
        // 注意: 如果if分支的代码只有一行,那么{}可以省略不写。
        // 但是一旦去掉{}只能控制紧随的第一行代码。(大家注意:还是建议大家加上{},可读性好,不容易理解出错!)

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

        // 需求2:你的钱包有钱10块钱,发出红包,如果足够就提示发成功,如果不够提示余额不足。
        double money = 10;
        if(money >= 15) {
            System.out.println("发出红包成功!");
        }else {
            System.out.println("余额不足~!");
        }

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

        // 需求3:绩效系统:按照你每个月的打分输出对应的等级。
        // 0 - 60 ===> D
        // 60 - 80 ===> C
        // 80 - 90 ===> B
        // 90 - 100 ===> A
        System.out.println("请输入该员工的绩效分数:");
        double score = sc.nextDouble();
        if(score >= 0 && score < 60) {
            System.out.println("您本月的绩效级别是:D");
        }else if(score >= 60 && score < 80){
            System.out.println("您本月的绩效级别是:C");
        }else if(score >= 80 && score < 90){
            System.out.println("您本月的绩效级别是:B");
        }else if(score >= 90 && score <= 100){
            System.out.println("您本月的绩效级别是:A");
        }else {
            System.out.println("您输入的成绩是瞎搞的,请检查!");
        }
    }
}

运行结果如下:

录入这个人的体温:
36.8
审核结束!
-------------------------------------------------------
余额不足~!
-------------------------------------------------------
请输入该员工的绩效分数:
91
您本月的绩效级别是:A



switch


package com.itheima.branch;

public class SwitchDemo2 {
    public static void main(String[] args) {
        // 目标:掌握switch分支的写法,理解其流程,还有与if分支的比较。
        // 3、正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
        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("星期数据有问题!");
        }
    }
}

运行结果如下:

主动帮助新来的女程序员解决bug!

switch使用时的注意事项

package com.itheima.branch;

public class SwitchDemo3 {
    public static void main(String[] args) {
        // 目标:理解switch的注意事项。
        // 1、表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
        char a = 'c';
        String weekDay = "周一";
        long lg = 13;
        double score = 0.1 + 0.2;
        System.out.println(score);
//        switch (score){
//        }

        // 2、case给出的值不允许重复,且只能是字面量,不能是变量。
        int b = 10;
        int c = 12;

        switch (b) {
            case 10:
                break;
            case 11:
                break;
            case 12:
                break;
        }

        // 3、正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
    }
}

运行结果如下:

0.3

package com.itheima.branch;

public class SwitchDemo4 {
    public static void main(String[] args) {
        // 目标:掌握switch穿透性的作用:可以把case中的相同代码穿透一个case写,从而简化代码!
        String weekDay = "周三";
        switch (weekDay) {
            case "周一":
                System.out.println("埋头苦干,解决bug!");
                break; // 跳出分支
            case "周二":
            case "周三":
            case "周四":
                System.out.println("请求大牛程序员帮忙!");
                break; // 跳出分支
            case "周五":
                System.out.println("自己整理代码!");
                 break; // 跳出分支
            case "周六":
            case "周日":
                System.out.println("打游戏!");
                break; // 跳出分支
            default:
                System.out.println("星期数据有问题!");
        }
    }
}

运行结果如下:

请求大牛程序员帮忙!

02.循环结构

for循环

在这里插入图片描述

package com.itheima.loop;

public class ForDemo1 {
    public static void main(String[] args) {
        // 目标:掌握for循环的书写,并理解其执行流程。
        // 需求:控制打印3行HelloWorld
        /**
         * 执行流程:
         *    计算机遇到for关键字就开启循环。
         *    先执行初始化语句int i =0,然后判断 循环条件 0 < 3 成立,执行循环体语句输出第一行HelloWorld
         *    接着执行迭代语句i++,i =1,然后判断 循环条件 1 < 3 成立,执行循环体语句输出第二行HelloWorld
         *    接着执行迭代语句i++,i =2,然后判断 循环条件 2 < 3 成立,执行循环体语句输出第三行HelloWorld
         *    接着执行迭代语句i++,i =3,然后判断 循环条件 3 < 3 不成立,循环立即结束。
         */
        for (int i = 0; i < 3; i++) {
            System.out.println("Hello World");
        }

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

        for (int i = 0; i < 5; i++) {
            // i = 0 1 2 3 4
            System.out.println("HelloWorld");
        }

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

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

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

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

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

        for (int i = 4; i <= 10; i++) {
            // i = 4 5 6 7 8 9 10
            System.out.println("HelloWorld");
        }

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

        for (int i = 1; i <= 10; i+=2 ) {
            // i = 1 3 5 7 9
            System.out.println("HelloWorld");
        }

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

        // 批量产生 1 - 100的每个数据
        for (int i = 1; i <= 100; i++) {
            // i = 1 2 3 4 5 6 ... 99 100
            System.out.println(i);
        }
    }
}

package com.itheima.loop;

public class ForTest2 {
    public static void main(String[] args) {
        // 目标:完成for循环求和。 1-5的和。
        // 2、定义一个变量用于累加求和。
        int sum = 0;

        // 1、使用循环产生 1 2 3  4 5的数据。
        for (int i = 1; i <= 5; i++) {
            // i = 1 2 3 4 5
            // 3、累加数据求和
            /**
             * sum = 0 + 1 = 1
             * sum = 1 + 2 = 3
             * sum = 3 + 3 = 6
             * sum = 6 + 4 = 10
             * sum = 10 + 5 = 15
             */
            sum += i; // sum = sum + i;
        }

        // 4、输出求和变量sum即可。
        System.out.println("1-5的和是:" + sum);
    }
}

运行结果如下:

1-5的和是:15


package com.itheima.loop;

public class ForTest3 {
    public static void main(String[] args) {
        // 目标:求奇数和
        // 2、定义一个求和变量
        int sum = 0;

        // 1、定义for循环产生 1 - 10的每个数据
        for (int i = 1; i <= 10; i++) {
            // i = 1 2 3 4 5 6 7 8 9 10

            // 3、筛选出奇数累加
            if (i % 2 == 1) {
                // i = 1 3 5 7 9
                // 4、累加数据
                sum += i;
            }

        }
        // 5、直接输出数据。
        System.out.println("1-10的奇数和是:" + sum);
    }
}

运行结果如下:

1-10的奇数和是:25
package com.itheima.loop;

public class ForTest4 {
    public static void main(String[] args) {
        // 目标:求奇数和的方式二

        // 2、准备一个整数变量用于求和
        int sum = 0;

        // 1、产生1 3 5 7 9 的奇数
        for (int i = 1; i <= 10; i+=2) {
            // i = 1 3 5 7 9

            // 3、直接累加
            sum += i;
        }

        // 4、直接输出求和变量
        System.out.println("1-10的奇数和是:" + sum);
    }
}

运行结果如下:

1-10的奇数和是:25

package com.itheima.loop;

public class ForTest5 {
    public static void main(String[] args) {
        // 目标:求水仙花数,输出。
        // 1、找到全部的三位数。
        System.out.println("水仙花数有:");
        int count = 0; // 统计水仙花个数的。
        for (int i = 100; i <= 999; i++) {
            // i  = 100 101 102 ... 153 ... 998 999
            // 2、判断这个数是否是水仙花数,是就输出,不是不管!
            // i = 153
            // 个位:
            int ge = i % 10;
            // 十位
            int shi = i / 10 % 10;
            // 百位
            int bai = i / 100;

            // 3、正式判断这个数是否满足水仙花数的要求
            if ((ge * ge * ge + shi * shi * shi + bai * bai * bai) == i) {
                System.out.print(i + " "); // 不换行
                count++; // 统计一次!
            }
        }
        System.out.println(); // 就是换行
        System.out.println("水仙花个数是:"  + count);
    }
}

运行结果如下:

水仙花数有:
153 370 371 407 
水仙花个数是:4

while循环

package com.itheima.loop;

public class WhileDemo6 {
    public static void main(String[] args) {
        // 目标:掌握while循环的格式写法,并理解流程。搞清楚与for循环的区别。
        int i = 0;
        while (i < 3){
            System.out.println("Hello World!");
            i++;
        }
    }
}

运行结果如下:

Hello World!
Hello World!
Hello World!

package com.itheima.loop;

public class WhileTest7 {
    public static void main(String[] args) {
        // 目标:完成珠穆朗玛峰案例
        // 1、把数据拿到程序中来。
        double peakHeight = 8848860;
        double paperThickness = 0.1;

        // 4、定义一个变量用于计数。
        int count = 0;

        // 2、使用一个while循环,控制纸张进行折叠。
        while ( paperThickness < peakHeight ){
            // 3、开始折叠一次。
            count++;
            // 5、控制纸张的厚度变为原来的两倍。
            paperThickness *= 2; // paperThickness = paperThickness * 2;
        }

        // 6、输出count变量,就是要折叠的次数
        System.out.println("纸张最终高度:" + paperThickness);
        System.out.println("需要折叠" + count + "次,纸张就会超过山峰高峰!");
    }
}

运行结果如下:

纸张最终高度:1.34217728E7
需要折叠27次,纸张就会超过山峰高峰!

do-while循环


在这里插入图片描述

package com.itheima.loop;

public class DoWhileDemo8 {
    public static void main(String[] args) {
        // 目标:先搞清楚do-while循环的写法、流程、执行特点、应用场景。和前面循环的区别
        int i = 0;
        do {
            System.out.println("Hello World!");
            i++;
        } while (i < 3);

        // 特点:先执行后判断,不管三七二十一,一定会执行一次。
        do {
            System.out.println("Hello World2!");
        }while (false);

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

        for (int j = 0; j < 3; j++) {
            System.out.println("Hello World! ==> " + j);
        }
        // System.out.println(j); // 报错
        for (int j = 0; j < 3; j++) {
            System.out.println("Hello World! ==> " + j);
        }

        int m = 0;
        while (m < 3){
            System.out.println("Hello World");
            m++;
        }
        System.out.println(m); // 3
    }
}

运行结果如下:

Hello World!
Hello World!
Hello World!
Hello World2!
--------------------------------------
Hello World! ==> 0
Hello World! ==> 1
Hello World! ==> 2
Hello World! ==> 0
Hello World! ==> 1
Hello World! ==> 2
Hello World
Hello World
Hello World
3

死循环

package com.itheima.loop;

public class DeadForDemo9 {
    public static void main(String[] args) {
        // 目标:掌握死循环的写法。
        // 1、for实现
//        for ( ; ; ) {
//            System.out.println("Hello World!");
//        }

        // 2、while实现死循环(经典写法)
//        while (true) {
//            System.out.println("Hello World!");
//        }
//
        // 3、do-while实现死循环
        do {
            System.out.println("Hello World!");
        }while (true);
    }
}

嵌套循环

在这里插入图片描述

package com.itheima.loop;

public class ForForDemo10 {
    public static void main(String[] args) {
        // 目标:理解循环嵌套的执行流程。
        // 场景:假如你有女朋友,你犯错了,你女朋友罚你说三天,每天五句我爱你。
        for (int i = 1; i <= 3; i++) {
            for (int j = 1; j <= 5; j++) {
                System.out.println("我爱你");
            }
            System.out.println("---------------------------------------------");
        }
        // 循环嵌套的流程:外部循环每执行一次,内部循环要完整执行完一轮。

        // 需求:打印4行5列*
        // *****
        // *****
        // *****
        // *****
        // 1、定义一个循环控制打几行
        for (int i = 1; i <= 4; i++) {
            // 2、定义一个循环控制打印多少个星星
            for (int j = 1; j <= 5; j++) {
                System.out.print("*"); // 不换行
            }
            System.out.println(); // 换行
        }
    }
}

运行结果如下:

我爱你
我爱你
我爱你
我爱你
我爱你
---------------------------------------------
我爱你
我爱你
我爱你
我爱你
我爱你
---------------------------------------------
我爱你
我爱你
我爱你
我爱你
我爱你
---------------------------------------------
*****
*****
*****
*****

03.break、continue

package com.itheima.loop;

public class BreakAndContinueDemo11 {
    public static void main(String[] args) {
        // 目标:搞清楚break和continue的作用。

        // 1、break的作用:可以用在switch分支和循环中,用在循环中是立即结束并跳出当前所在循环的执行。
        // 场景:假如你又有女朋友了,你犯错了,你女朋友罚你说6句我爱你,说到第三句后心软了,让你别说了!
        for (int i = 1; i <= 6; i++) {
            System.out.println("我爱你" + i);
            if(i == 3){
                break; // 立即结束并跳出当前所在循环的执行。
            }
        }

//        if( 2 > 1){
//            break; // 报错
//            continue; // 报错
//        }

        // 2、continue的作用:可以用在循环中,用于跳出当前循环的当次执行,直接进入循环的下一次执行。
        // 场景:假如你还有女朋友,你犯错了,你女朋友让你做家务6天,每天都是洗碗拖地,第三天表现很好不用做了,但是还不解恨
        // 第四天还是要继续做的。。。
        for (int i = 1; i <= 6; i++) {
            if(i == 3){
                // 表现很好,当次不用做,直接去做下一次
                continue; // 用于跳出当前循环的当次执行,直接进入循环的下一次执行。
            }
            System.out.println("洗碗" + i);
            System.out.println("拖地" + i);
        }

        System.out.println("结束。。。。");
    }
}

运行结果如下:

我爱你1
我爱你2
我爱你3
洗碗1
拖地1
洗碗2
拖地2
洗碗4
拖地4
洗碗5
拖地5
洗碗6
拖地6
结束。。。。

package com.itheima.loop;

import java.util.Scanner;

public class BreakTest12 {
    public static void main(String[] args) {
        // 目标:验证密码
        // 1、准备正确密码
        int sysPassWord = 520;

        // 2、让用户不断的去猜测。
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请您输入密码:");
            int passWord = sc.nextInt();

            // 3、认证密码是否正确。
            if(passWord == sysPassWord) {
                System.out.println("恭喜您,登录成功!");
                break; // 跳出循环!
            }else {
                System.out.println("对不起,您输入的密码有问题!请重新确认!");
            }
        }
    }
}

运行结果如下:

请您输入密码:
123456789
对不起,您输入的密码有问题!请重新确认!
请您输入密码:
1234567
对不起,您输入的密码有问题!请重新确认!
请您输入密码:
520
恭喜您,登录成功!

04.案例技术:Random随机数


package com.itheima.random;

import java.util.Random;

public class RandomDemo1 {
    public static void main(String[] args) {
        // 目标:学会使用Random获取随机数。
        // 1、导包
        // 2、创建一个Random随机数对象。
        Random r = new Random();

        for (int i = 0; i < 20; i++) {
            // CTRL  + ALT + T
            // 3、调用随机数对象的功能得到一个随机数
            int number = r.nextInt(10); // 0 - 9 (包前不包后)
            // 4、输出变量即可
            System.out.println(number);
        }

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

//        for (int i = 0; i < 20; i++) {
//            int number = r.nextInt(1, 11); //  1- 10之间的随机数 只能JDK 17开始才能使用
//            System.out.println(number);
//        }

        for (int i = 0; i < 20; i++) {
            // 1 - 10 ==> -1 ==> (0 - 9) + 1
            int number = r.nextInt(10) + 1;
            System.out.println(number);
        }

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

        // 需求: 3 - 14 ==> -3 ==> (0 - 11) + 3
        for (int i = 0; i < 20; i++) {
            int number = r.nextInt(12) + 3;
            System.out.println(number);
        }
    }
}

运行结果如下:

7
6
8
5
3
7
5
2
4
0
5
3
2
3
2
8
2
6
3
4
---------------------------------------
10
9
9
8
4
6
3
10
4
5
10
10
9
7
10
9
10
8
8
10
---------------------------------------
14
9
10
7
11
5
4
10
9
6
10
7
11
12
12
13
3
8
5
3

package com.itheima.random;

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

public class RandomTest2 {
    public static void main(String[] args) {
        // 目标:完成猜数字游戏案例。
        // 1、随机一个1-100的随机数
        Random r = new Random();
        int luckNumber = r.nextInt(100 )  + 1;

        // 2、写一个死循环让用户不断的去猜测。
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请您输入您猜测的数字:");
            int guessNumber = sc.nextInt();

            // 3、判断是否猜中
            if(guessNumber > luckNumber) {
                System.out.println("您猜测过大!");
            }else if(guessNumber < luckNumber){
                System.out.println("您猜测过小!");
            }else {
                System.out.println("恭喜你,猜中了,可以去买单了!");
                break;
            }
        }
    }
}

运行结果如下:

请您输入您猜测的数字:
90
您猜测过大!
请您输入您猜测的数字:
50
您猜测过大!
请您输入您猜测的数字:
40
您猜测过大!
请您输入您猜测的数字:
30
您猜测过大!
请您输入您猜测的数字:
20
您猜测过大!
请您输入您猜测的数字:
10
您猜测过大!
请您输入您猜测的数字:
1
您猜测过小!
请您输入您猜测的数字:
5
您猜测过大!
请您输入您猜测的数字:
4
恭喜你,猜中了,可以去买单了!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ayx小蕴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值