--- title: "03-流程控制工程" created: 2025-12-02 tags: - Java --- # 流程控制工程 > [!note] 本篇定位 > 本篇聚合 IDEA 工程 `flow-control-app` 的全部源码练习(2025-12 学),按包分节**全文收录**——当年的学习注释(`// 目标:…` `// 需求:…`)原样保留,是最真实的练习轨迹。工程怎么建、模块/包/类怎么管理见 [[00-管理项目|00-管理项目]]。 **包含 14 个 .java 练习**,目录结构: ```text 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 ```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 ```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 ```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 ```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 ```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 ```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 ```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 ```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 ```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 ```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 ```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 ```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 ```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 ```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; // 结束死循环 } } } } ``` --- ⬅️ [[02-基础语法工程|基础语法工程]] 🏠 [[00-管理项目|00-管理项目]] ➡️ [[04-方法工程|方法工程]]