发布时间:2026/8/5 23:59:22
让代码学会“思考”和“重复”——Java控制结构(循环篇) 承接上篇顺序、分支篇循环结构应用情景比如当你需要打印 5 次 你好Java 时你可以这样编写public class Main { public static void main(String[] args) { //打印5次 你好Java System.out.println(你好Java); System.out.println(你好Java); System.out.println(你好Java); System.out.println(你好Java); System.out.println(你好Java); } }但是当你需要打印10次、20次甚至上百次时此方法是否还适用显然不行。这时就需要借用循环结构来解决打印次数量较大的情况for(int i 1; i 100; i) { //打印100次 你好Java System.out.println(你好Java); }int i 1; while(i 100) { //打印100次 你好Java System.out.println(你好Java); i; }int i 1; do { //打印100次 你好Java System.out.println(你好Java); i; } while(i 100);基本介绍听其名而知其意就是让你的代码可以循环执行循环结构主要有三种(1). for(2). while(3). do-whilefor 循环、while 循环与 do- while 循环执行流程图for 循环控制基本语法for(循环变量初始化; 循环条件; 循环变量迭代) {循环操作(可多条语句);}执行顺序在每一次循环中先初始化循环变量再判断循环条件是否满足。若满足则执行循环操作最后迭代循环变量并进入下一次循环若不满足则跳出循环for 循环结束可结合上面的执行流程图理解for 循环控制的注意事项和细节说明1. 循环条件是返回一个布尔值的表达式2. for( ; 循环判断条件; ) 中的初始化和变量迭代可以写到其它地方但是两边的分号不能省略int i 1; //循环变量初始化 for( ; i 10; ) { //打印 10 次 hello, java System.out.println(hello, java i); i; } System.out.println(i i); //11注意for( ; ; ) 表示一个死循环无限循环除非有特殊需求,否则不建议使用3. 循环初始值可以有多条初始化语句但要求类型一样并且中间用逗号隔开循环变量迭代也可以有多条变量迭代语句中间用逗号隔开int count 3; for(int i 0, j 0; i count; i, j 2) { System.out.println(i i j j); } /* i 0 j 0 i 1 j 2 i 2 j 4 */练习题1. 打印 1-100 之间所有是 9 的倍数的整数统计个数及总和public class ForExercise01 { //编写一个main方法 public static void main(String[] args) { int i 1; int add 0, count 0; for(i 1; i 100; i) { if(i % 9 0) { System.out.println(i); add i; count; } } System.out.printf(1~100之间所有是9的倍数的整数有 count 个总和为 add); //9 18 27 36 45 54 63 72 81 90 99 //count 11, add 594 } }2. 完成下面的表达式输出0 5 51 4 52 3 53 2 54 1 55 0 5public class ForExercise02 { //编写一个main方法 public static void main(String[] args) { //i 的起始值为 0j 为 5一个加一个减相互对仗 for(int i 0, j 5; i 5; i, j--) { int num i j; System.out.println(i j num); } } }while 循环控制基本语法循环变量初始化while(循环条件) {循环体(语句);循环变量迭代;}执行顺序循环变量在循环外初始化进入 while 循环判断是否满足循环条件。若满足则按顺序先执行循环体后执行循环变量迭代并进入下一循环若不满足则跳出循环whlie 循环结束可结合上面的流程图理解结合基本语法编写打印 10 次 hello, java 程序public class While01 { //编写一个main方法 public static void main(String[] args) { int i 1; //循环变量初始化 while(i 10) { //循环条件 System.out.println(hello, java i); i; //循环变量迭代 } } }while 循环控制的注意事项和细节说明1. 循环条件是返回一个布尔值的表达式2. while 循环是先判断再执行语句练习题1. 打印 1-100 之间所有能被 3 整除的数public class WhileExercise01 { //编写一个main方法 public static void main(String[] args) { int num 1; while(num 100) { if(num % 3 0) { System.out.print(num ); //每个数之间用空格隔开 } num; } } }2. 打印 40-200 之间所有的偶数public class WhileExercise { //编写一个main方法 public static void main(String[] args) { int num 40; while(num 200) { if(num % 2 0) { System.out.print(num ); //每个数之间用空格隔开 } num; } } }注意System.out.println() 与 System.out.print() 的区别前者执行完自动换行后者不换行do-whlie 循环控制基本语法do {循环体(语句);循环变量迭代;} while(循环条件);执行顺序do-while 循环变量与 for, while 不同它遵循的是先执行后判断。即先执行循环体再执行循环变量迭代最后判断循环条件。若满足则进入下一次循环否则跳出循环do-while 循环结束结合基本语法编写打印 10 次 hello, java 程序public class DoWhile01 { //编写一个main方法 public static void main(String[] args) { int i 1; do { System.out.println(hello, java i); //循环执行语句 i; //循环变量迭代 } while(i 10); //循环条件 } }do-while 循环控制的注意事项与细节说明1. 循环条件是返回一个布尔值表达式2. do..while 循环是先执行再判断因此它至少执行一次练习题1. 统计 1-200 之间能被 5 整除但不能被 3 整除的个数public class DoWhileExercise01 { //编写一个main方法 public static void main(String[] args) { int count 0; int j 1; do { if(j % 5 0 j % 3 ! 0) { //能被 5 整除但不能被 3 整除 count; } j; } while(j 200); System.out.println(1-200之间能被5整出但不能被3整除的数有 count 个); } }2. 情景试题妈妈在烤鱼小明问烤好了吗如果妈妈说没烤好小明继续玩游戏如果妈妈说烤好了小明就放下游戏去吃烤鱼提示System.out.println(小明问烤好了吗 y/n);import java.util.Scanner; public class DoWhileExercise02 { //编写一个main方法 public static void main(String[] args) { Scanner scanner new Scanner(System.in); char answer; //小明妈妈的回复 y/n do { System.out.println(小明问烤好了吗 y/n); answer scanner.next().charAt(0); if(answer n) { System.out.println(小明继续玩游戏); } } while(answer ! y); System.out.println(小明放下游戏去吃烤鱼); } }多循环控制介绍1. 将一个循环放在另一个循环体内就形成了嵌套循环。其中for, while, do…while 均可以作为外层循环和内层循环。建议一般使用两层最多不要超过3层否则代码的可读性很差2. 实质上嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为 false 时才会完全跳出内层循环才可结束外层的当次循环开始下一次的循环。3. 设外层循环次数为 m 次内层为 n 次则内层循环体实际上需要执行 m * n 次。for(int i 1; i 7; i) { for(int j 1; j 2; j) { System.out.println(ok~); } } //7 * 2 14 总共执行 14 次循环应用案例for(int i 0; i 2; i) { for(int j 0; j 3; j) { System.out.println(i i , j j); } } //外层循环 2 次内层循环 3 次共执行 2 × 3 6 次 /* i 0, j 0 i 0, j 1 i 0, j 2 i 1, j 0 i 1, j 1 i 1, j 2 */嵌套分析外层循环中循环变量 i 初始值为 0小于 2进入内层 for 循环执行循环变量 j 的循环从 0 到 2然后结束内层循环继续执行外层循环i 值变为 1进入内层 for 循环...练习题1. 按要求完成下面的程序(1). 统计3个班成绩情况每个班有5名同学(2). 求出各个班的平均分和所有班级的平均分(3). 统计3个班及格人数每个班有5名同学import java.util.Scanner; public class MulForExercise01 { public static void main(String[] args) { Scanner scanner new Scanner(System.in); int pass_Num 0; // 及格人数 double totalAll 0; // 所有班级的总分 int classNum 3; // 班级个数 int stuNum 5; // 学生个数 for(int i 1; i classNum; i) { double classTotal 0; // 当前班级的总分 for(int j 1; j stuNum; j) { System.out.println(请输入第 i 个班的第 j 个学生的成绩); double score scanner.nextDouble(); if(score 60) { pass_Num; // 统计及格人数 } classTotal score; // 累加当前学生的分数 } // 计算当前班级的平均分 double classAverage classTotal / stuNum; System.out.println(第 i 个班的平均分为 classAverage); totalAll classTotal; // 累加所有班级的总分 } // 计算所有班级的平均分 double last_average totalAll / (classNum * stuNum); System.out.println(所有班级的平均分为 last_average); System.out.println(3个班及格人数为 pass_Num); } }break 语句与 continue 语句执行流程图以 while 使用 break 为例跳转控制语句-break基本介绍break 语句用于终止某个语句块的执行一般是用在 switch 或者循环中基本语法{......break;......}快速入门public class Break01 { //编写一个main方法 public static void main(String[] args) { for(int i 0; i 10; i) { if(i 3) { //当 i 的值为 3 时break 跳出循环后续循环部分不再进行 break; } System.out.println(i i); } } /* i 0 i 1 i 2 */ }代码解读在 for 循环中当 i 的值为 3 时使用 break 跳出整个循环后面的循环部分不再执行break 语句的注意事项和细节说明1. break 语句出现在多层嵌套的语句块中时可以通过标签指明要终止的是哪一层语块2. 标签的基本使用label1: { ...label2: { ...label3: { ...break (label2);...}}}注标签可以自行命名不必要以 label 命名也可以如 abc1, abc2, abc3 等等public class BreakDetail { //编写一个main方法 public static void main(String[] args) { label1: for(int j 0; j 4; j) { label2: for(int i 0; i 10; i) { if(i 2) { //break; //等价 break label2 break label1; //跳出 label1 处的整个循环块 } System.out.println(i i); } } /* i 0 i 1 */ } }练习题1. 1-100 以内的数求和求出当和第一次大于 20 的当前数【for break】public class BreakExercise { //编写一个main方法 public static void main(String[] args) { int add 0; int i 0; for(i 1; ; i) { add i; if(add 20) { //当和大于 20 时跳出循环 break; } } System.out.println(当和第一次大于20的当前数为 i); //6 } }跳转控制语句-continue基本介绍1. continue 语句用于结束本次循环继续执行下一次循环2. continue 语句出现在多层嵌套的循环语句体中时可以通过标签指明要跳过的是哪一层循环规则和 break 标签的使用一样基本语法{ ......continue;......}快速入门public class Continue01 { //编写一个main方法 public static void main(String[] args) { int i 1; while(i 4) { i; if(i 2) { //跳过本次循环继续执行下一次循环 continue; } System.out.println(i i); } /* i 3 i 4 i 5 */ } }代码解读在 while 循环中i 后 i 的值为 2跳过本次循环打印部分 i 值部分跳过直接进入下一次循环continue 的细节案例public class ContinueDetail { //编写一个main方法 public static void main(String[] args) { label1: for(int j 0; j 4; j) { label2: for(int i 0; i 10; i) { if(i 2) { //continue; //等价于 continue label2 continue label1; //跳过 label1 处的本次循环 } System.out.println(i i); } } /* i 0 i 1 i 0 i 1 i 0 i 1 i 0 i 1 */ } }代码解读j 满足的条件的值为 0, 1, 2, 3。跳过 label1内部的 label2 的 for 循环也被跳过故每一次内部循环只打印出 i 0 和 i 1 后就被 continue 跳过总共打印四次跳转控制语句-return介绍return 使用在方法表示跳出所在的方法。注意如果 return 写在 main 方法则表示退出程序在普通方法中则只是返回调用处后续学习方法部分时会详细讲述public class Return01 { //编写一个main方法 public static void main(String[] args) { for(int i 1; i 5; i) { if(i 3) { System.out.println(hello, java i); return; //当 return 用在方法时表示跳出方法如果使用在 main表示退出程序 } System.out.println(Hello World!); } System.out.println(go on..); /* Hello World! Hello World! hello, java3 */ } }代码解读在 for 循环中当 i 1 和 i 2 时不满足 if(i 3)不执行打印 hello, java i执行了两次 Hello World! 的打印当 i 3 满足 if 语句时执行 hello, java i 的打印然后 return由于 return 用在 main 方法中退出了整个程序故程序最后的 go on.. 打印无从执行结语以上就是控制结构相关知识的所有梳理了顺序结构是程序的“直行道”分支结构if - else、switch让程序学会“判断”循环结构for、while、do-while让程序学会“重复”。三者组合几乎可以解决所有业务流程的逻辑问题。控制结构是编程逻辑的基石希望小伙伴们多敲代码、多画流程图把逻辑思维练扎实。在本篇章中习题的整理较少可能不足以满足小伙伴们的学习需求下一篇白弟会专门再整理一些控制结构的相关练习欢迎小伙伴的参考。

相关新闻

2026/8/5 23:54:21

OpenClaw部署指南:解决AI环境依赖难题,实现高效开发

1. 项目概述:为什么需要OpenClaw? 如果你在AI、机器学习或者数据科学领域摸爬滚打过一段时间,大概率会遇到一个让人头疼的问题:项目环境依赖。不同的项目需要不同版本的Python、PyTorch、CUDA,甚至是一些特定版本的系…

2026/8/5 23:54:21

ZStack企业级知识工程实践:如何“造”出可信知识?

一位一线工程师在深夜排查一个云主机热迁移失败的问题。报错信息很明确:rsync "connection unexpectedly closed"。他知道公司里一定有人处理过同样的问题——也许在某份文档里,也许在某个工单里,也许在某位同事的聊天记录里。但此…

2026/8/5 23:54:21

2026.7.13(1)【图片隐写】JinSanPang

📌 题目信息项目内容题目名称JinSanPang题目来源BUUCTF题目类型MISC / 图片隐写 / GIF 多帧隐写子分类图片隐写考点帧隐藏信息提取、GIF 动图逐帧分析难度⭐最终 Flagflag{he11ohongke}🛠️ 使用工具StegSolve(或 GIF 帧浏览器/图片编辑软件&…

2026/8/6 2:54:33

Java XML转JSON实战:原理、方案选型与Jackson进阶指南

1. 项目缘起:为什么我们还在处理XML转JSON?干了这么多年Java开发,每次看到项目里还有XML转JSON的需求,心里总会嘀咕一句:这活儿还没被淘汰啊?但现实是,无论你是在做老旧系统的接口适配、解析第三…

2026/8/6 2:54:33

微信小程序家教系统开发与优化实践

1. 项目概述:家教行业的数字化解决方案去年暑假,我帮朋友开发了一套家教信息管理系统,上线三个月就积累了2000用户。这个基于微信小程序的解决方案,彻底改变了传统家教中介靠Excel和微信群管理的低效模式。微信小程序天然具备的轻…

2026/8/6 2:54:33

从Prompt到AI工程:构建可管理、可测试的智能体系统

如果你最近在尝试使用大模型API,大概率遇到过这样的报错:invalid prompt、prompt is too long、maximum context length exceeded。这些看似简单的错误背后,其实暴露了当前AI应用开发的一个核心痛点——我们仍然在用“对话”的思维去构建“工…

2026/8/6 2:54:33

蓝速科技 AI 双屏翻译机场景化选型指南

在跨国商务洽谈或涉外政务接待中,语言障碍往往是阻碍沟通效率的第一道关卡。许多企业行政或前台人员在面对外宾时,常陷入“一人手持翻译机、来回传递设备”的尴尬局面:不仅打断对话节奏,还容易因设备递接造成信息遗漏,…

2026/8/6 2:49:33

二叉树前中后序遍历

二叉树前中后序遍历 - 代码实现思路与图解 1. 项目概述 本项目实现了二叉树的三种遍历方式:前序遍历、中序遍历和后序遍历,均采用递归实现。 2. 数据结构定义 2.1 二叉树节点结构 typedef char BTDataType;typedef struct BinaryTreeNode {struct Binary…

2026/8/5 3:13:11

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/6 0:04:22

电力系统调度中的源荷不确定性建模与优化实践

1. 电力系统调度中的源荷不确定性挑战现代电力系统正面临前所未有的复杂性,其中源荷不确定性(Source-Load Uncertainty)已成为调度决策中最棘手的难题之一。我在参与某省级电网调度系统升级时,曾遇到风电预测误差导致日内调度计划…

2026/8/6 0:04:22

VGG-T3技术解析:3D重建速度的革命性突破

1. 项目概述:VGG-T3如何重新定义3D重建速度在计算机视觉领域,3D场景重建一直是个计算密集型任务。传统方法重建1000帧图像规模的场景往往需要数小时甚至更长时间,而英伟达最新发布的VGG-T3技术将这个时间压缩到了惊人的54秒。这个突破性进展来…

2026/8/6 0:04:22

深度解析旅游网站建设的意义及其对行业发展的深远影响与核心价值体现

在这个数字化浪潮席卷全球的今天,我们似乎已经忘记了,曾经有一段时间,人们想要去一个陌生的地方,只能靠在书桌前翻阅厚厚的旅游杂志,或者向刚从那里回来的朋友询问那些模糊不清的印象。那时候,“远方”是一个需要精打细算才能抵达的奢侈概念。而现在,只需要一部手机,轻…

2026/8/5 19:21:13

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/5 19:21:13

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/5 19:21:13

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…