流程控制工程

ℹ️本篇定位

本篇聚合 IDEA 工程 flow-control-app 的全部源码练习(2025-12 学),按包分节全文收录——当年的学习注释(// 目标:… // 需求:…)原样保留,是最真实的练习轨迹。工程怎么建、模块/包/类怎么管理见 00-管理项目

包含 14 个 .java 练习,目录结构:

flow-control-app/src/
├── com/zwnsyw/branch/IfDemo1.java
├── com/zwnsyw/branch/SwitchDemo2.java
├── com/zwnsyw/branch/SwitchDemo3.java
├── com/zwnsyw/branch/SwitchDemo4.java
├── com/zwnsyw/loop/BreakAndContinueDemo8.java
├── com/zwnsyw/loop/DoWhileDemo5.java
├── com/zwnsyw/loop/EndLessLoopDemo6.java
├── com/zwnsyw/loop/ForDemo1.java
├── com/zwnsyw/loop/ForDemo2.java
├── com/zwnsyw/loop/LoopNestedDemo7.java
├── com/zwnsyw/loop/WhileDemo3.java
├── com/zwnsyw/loop/WhileTest4.java
├── com/zwnsyw/random/RandomDemo1.java
└── com/zwnsyw/random/RandomTest2.java

分支结构

if 与 switch 各形态。

IfDemo1.java

package com.zwnsyw.branch;

public class IfDemo1 {
    public static void main(String[] args) {
        // 目标:需要同学们掌握if分支三种形式的用法和执行流程。
        // 需求:测量用户体温,发现体温高于37度就报警。
        double t = 36.9;
        if(t > 37){
            System.out.println("这个人的温度异常,把他赶紧带走~~");
        }

        // 需求2:发红包,你的钱包余额是99元,现在要发出90元
        // 如果钱够触发发红包的动作,如果钱不够,则提示:余额不足。
        double money = 19;
        if(money >= 90){
            System.out.println("发红包成功了~");
        }else {
            System.out.println("余额不足~~");
        }

        // 需求3:某个公司有一个绩效系统,根据员工的打分输出对应的绩效级别。[0,60) D  [60,80) C [80,90) B [90,100] A
        int score = 298;
        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("您录入的分数有毛病~~");
        }
    }
}

SwitchDemo2.java

package com.zwnsyw.branch;

/**
   目标:掌握switch的写法,理解其执行流程
 */
public class SwitchDemo2 {
    public static void main(String[] args) {
//        周一:埋头苦干,解决bug              周五:今晚吃鸡
//        周二:	请求大牛程序员帮忙             周六:与王婆介绍的小芳相亲
//        周三:今晚啤酒、龙虾、小烧烤      周日:郁郁寡欢、准备上班。
//        周四:主动帮助新来的女程序解决bug

        String week = "周三";
        switch (week){
            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("您输入的星期信息不存在~~~");
        }


    }
}

SwitchDemo3.java

package com.zwnsyw.branch;

public class SwitchDemo3 {
    public static void main(String[] args) {
        // 目标:搞清楚switch使用时的几点注意事项。
        // 1、表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
        int a = 10;
        double b = 0.1;
        double b2 = 0.2;
        double c = b + b2;
        System.out.println(c);
        switch (a){

        }
        // 2、case给出的值不允许重复,且只能是字面量,不能是变量。
        int i = 20;
        int d = 20;
        switch (i){
            case 10:

                break;
            case 20:

                break;
        }
        // 3、正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
        String week = "周三";
        switch (week){
            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("您输入的星期信息不存在~~~");
        }
    }
}

SwitchDemo4.java

package com.zwnsyw.branch;

public class SwitchDemo4 {
    public static void main(String[] args) {
        // 目标2:理解switch穿透性的作用:
        String week = "周五";
        switch (week){
            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("您输入的星期信息不存在~~~");
        }

    }
}

循环结构

三种循环 + 嵌套 + 跳转控制。

BreakAndContinueDemo8.java

package com.zwnsyw.loop;

public class BreakAndContinueDemo8 {
    public static void main(String[] args) {
        // 目标:掌握break和continue的作用。
        // 1、break:跳出并结束当前所在循环的执行。
        // 场景:假如你又有老婆了,你犯错了,你老婆罚你说:5句我爱你
        // 说到第三句的时候心软了,让你别再说了。
        for (int i = 1; i <= 5; i++) {
            System.out.println("我爱你:" + i);
            if(i == 3){
                // 说明已经说完了第三句了,心软了。
                break; // 跳出并结束当前所在循环的执行。
            }
        }

        // 2、continue:跳出当前循环的当次执行,直接进入循环的下一次执行。
        // 场景: 假如你有老婆,你犯错了,你老婆罚你洗碗5天。
        // 第三天的时候,你表现很好,第三天不用洗碗,但是不解恨,第四天还是要继续的。
        for (int i = 1; i <= 5; i++) {
            if(i == 3) {
                // 已经到了第三天,第三天不用洗的。
                continue;
            }
            System.out.println("洗碗:" + i);
        }

        if(3 < 9){
            //break;
            // continue;
            System.out.println("Hello World");
        }
    }
}

DoWhileDemo5.java

package com.zwnsyw.loop;

public class DoWhileDemo5 {
    public static void main(String[] args) {
        // 目标:掌握do-while循环的书写格式,执行流程,特点和应用场景。
        // 需求:打印多行Hello World
        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 World3");
        }
        // System.out.println(j);
        for (int j = 0; j < 3; j++) {
            System.out.println("Hello World3");
        }

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

EndLessLoopDemo6.java

package com.zwnsyw.loop;

public class EndLessLoopDemo6 {
    public static void main(String[] args) {
        // 目标:掌握死循环的写法。
      /*  for ( ; ; ){
            System.out.println("Hello World1");
        }*/

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

        do {
            System.out.println("Hello World3");
        }while (true);
    }
}

ForDemo1.java

package com.zwnsyw.loop;

public class ForDemo1 {
    public static void main(String[] args) {
        // 目标:需要同学们掌握for循环的书写格式,并理解其执行流程
        // 需求:打印多行Hello World
        /**
            流程:
                首先会执行初始化语句:int i = 0;
                i = 0,判断循环条件 0 < 3,返回true,计算机会进入到循环中执行输出第一行Hello World,接着执行迭代语句i++
                i = 1,判断循环条件 1 < 3,返回true,计算机会进入到循环中执行输出第二行Hello World,接着执行迭代语句i++
                i = 2,判断循环条件 2 < 3,返回true,计算机会进入到循环中执行输出第三行Hello World,接着执行迭代语句i++
                i = 3,判断循环条件 3 < 3,返回false,循环就会立即结束。
         */
        for(int i = 0; i < 3; i++) {
            // i = 0  1  2
            System.out.println("Hello World");
        }

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

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


    }
}

ForDemo2.java

package com.zwnsyw.loop;

public class ForDemo2 {
    public static void main(String[] args) {
        // 目标:掌握使用for循环批量产生数据。
        for (int i = 1; i <= 100; i++) {
            System.out.println(i);
        }

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

        // 2、定义一个变量用于求和
        int sum = 0; // 15

        // 1、定义一个循环,先产生1-100,这100个数
        for (int i = 1; i <= 100; i++) {
            // i = 1 2 3 4 5
            sum += i; //sum = sum  + i;
        }
        System.out.println("1-100的数据和:" +  sum);

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

        // 2、定义一个变量用于求和
        int sum1 = 0;

        // 1、定义一个循环产生1-100之间的奇数
        for (int i = 1; i < 100; i+=2) {
            // i = 1 3 5 7 ...
            sum1 += i;
        }
        System.out.println("1-100之间的奇数和:" +  sum1);

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

        // 2、定义一个变量用于累加奇数求和
        int sum2 = 0; // 4

        // 1、定义循环产生1-100之间的每个数据
        for (int i = 1; i <= 100; i++) {
            // i = 1 2 3 4 5 6 ... 99 100
            // 2、使用一个if分支,判断i此时记住的数据是否是奇数,是奇数我们才累加给一个变量
            if(i % 2 == 1){
                // i = 1 3 5 7 9 ... 99
                sum2 += i;
            }
        }
        System.out.println("1-100之间的奇数和:" + sum2);
    }
}

LoopNestedDemo7.java

package com.zwnsyw.loop;

public class LoopNestedDemo7 {
    public static void main(String[] args) {
        // 目标:搞清楚循环嵌套的执行流程。
        // 场景:假如你有老婆,你犯错了,你老婆罚你说:3天,每天5句我爱你。
        for (int i = 1; i <= 3; i++) {
            // i = 1  2  3
            for(int j = 1; j <= 5; j++) {
                System.out.println("我爱你:" + i);
            }
            System.out.println("-------------------------");
        }

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

WhileDemo3.java

package com.zwnsyw.loop;

public class WhileDemo3 {
    public static void main(String[] args) {
        // 目标:掌握while循环的书写格式,以及理解其执行流程。
        // 需求:打印多行Hello World
        int i = 0;
        while (i < 5) {
            // i = 0 1 2 3 4
            System.out.println("Hello World");
            i++;
        }
    }
}

WhileTest4.java

package com.zwnsyw.loop;

public class WhileTest4 {
    public static void main(String[] args) {
        // 目标:使用while循环解决问题,并理解什么情况下使用while,for。
        // 1、定义变量记住珠穆朗玛峰的高度和纸张的高度。
        double peakHeight = 8848860;
        double paperThickness = 0.1;

        // 3、定义一个变量count用于记住纸张折叠了多少次
        int count = 0;

        // 2、定义while循环控制纸张开始折叠
        while (paperThickness < peakHeight) {
            // 把纸张进行折叠,把纸张的厚度变成原来的2倍。
            paperThickness = paperThickness * 2;
            count++;
        }
        System.out.println("需要折叠多少次:" + count);
        System.out.println("最终纸张的厚度是:" + paperThickness);

    }
}

Random 随机数

Random 类与猜数字类练习。

RandomDemo1.java

package com.zwnsyw.random;

import java.util.Random;

public class RandomDemo1 {
    public static void main(String[] args) {
        // 目标:掌握使用Random生成随机数的步骤。
        // 1、导包。
        // 2、创建一个Random对象,用于生成随机数。
        Random r = new Random();
        // 3、调用Random提供的功能:nextInt得到随机数。
        for (int i = 1; i <= 20; i++) {
            int data = r.nextInt(10); // 0 - 9
            System.out.println(data);
        }

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

        for (int i = 1; i <= 20; i++) {
            // 生成:1-10之间的随机数
            // 1-10 => -1 => (0 - 9) + 1
            int data2 = r.nextInt(10) + 1;
            System.out.println(data2);
        }

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

        for (int i = 1;i <= 20; i++) {
            // 3 - 17 => -3 => (0 - 14) + 3
            int data3 = r.nextInt(15) + 3;
            System.out.println(data3);
        }
    }
}

RandomTest2.java

package com.zwnsyw.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; // 结束死循环
            }
        }
    }
}

⬅️ 基础语法工程 🏠 00-管理项目 ➡️ 方法工程