当前位置: 首页 > java >正文

Java基础语法之循环结构

循环结构

1.定义

  • 控制一段代码重复执行多次

2.分类

2.1 for循环

2.1.1 定义
  • 控制一段代码反复执行很多次。
2.1.2 for循环格式
for (初始化语句; 循环条件; 迭代语句) {
循环体语句(重复执行的代码);
}

示例

// 输出3次HelloWorld
for (int i = 0; i < 3; i++) {
System.out.println("Hello World");
}

执行流程:

  • 循环一开始,执行int i = 0 一次。
  • 此时 i=0 ,接着计算机执行循环条件语句:0 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
  • 此时 i=1 ,接着计算机执行循环条件语句:1 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
  • 此时 i=2 ,接着计算机执行循环条件语句:2 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
  • 此时 i=3 ,然后判断循环条件:3 < 3 返回false, 循环立即结束!!
2.1.3 for循环的应用场景
  • 比如淘宝、京东等平台的商品列示,后台管理平台的信息展示,减少代码的重复编写,灵活的控制程序的执行
2.1.4 for循环案例

需求1:求1-5之间的数据和,并把求和结果在控制台输出。

int sum = 0for (int i = 1; i <= 5; i++) {
sum += i;}

需求1:求1-10之间的奇数和,并把求和结果在控制台输出。

for (int i = 1; i <= 10; i+=2) {
}

2.2 while循环

2.2.1 while循环格式
初始化语句;
while (循环条件) {
循环体语句(被重复执行的代码);迭代语句;
}

示例

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

执行流程:

  • 循环一开始,执行int i = 0 一次。
  • 此时 i=0 ,接着计算机执行循环条件语句:0 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
  • 此时 i=1 ,接着计算机执行循环条件语句:1 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
  • 此时 i=2 ,接着计算机执行循环条件语句:2 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
  • 此时 i=3 ,然后判断循环条件:3 < 3 返回false, 循环立即结束!!
2.2.2 while和for的区别和for和while的应用场景
  • 功能上是完全一样的,for能解决的while也能解决,反之亦然。
  • 使用规范:知道循环几次:使用for;不知道循环几次建议使用:while。
2.2.3 while循环案例

需求:世界最高山峰珠穆朗玛峰高度是:8848.86米=8848860毫米,假如我有一张足够大的纸,它的厚度是0.1毫米。请问:该纸张折叠多少次,可以折成珠穆朗玛峰的高度?

分析:

  • 定义变量存储珠穆朗玛峰的高度、纸张的高度。
double peakHeight = 8848860;  // 山峰高度
double paperThickness = 0.1;  // 纸张厚度
  • 使用while循环来控制纸张折叠,循环条件是(纸张厚度<山峰高度),循环每执行一次,就表示纸张折叠一次,并把纸张厚度变为原来两倍。
  • 循环外定义计数变量count,循环每折叠一次纸张,让count变量+1;

完整代码:

double peakHeight  = 8848860;//山峰高度
double paperThickness = 0.1;//纸张厚度
int count = 0;//声明一个变量,用来记住折叠的次数while(paperThickness <= peakHeight){paperThickness = paperThickness * 2;//折叠一次,纸张厚度是原来的两倍count++;//折叠一次,次数count加1
}System.out.println("纸张折叠的次数为:" + count);//折叠次数为27

2.3 do-while循环

2.3.1 格式
初始化语句;
do {循环体语句;迭代语句;
} while (循环条件);

示例:

int i = 0;
do {
System.out.println(Hello World!");
i++;
} while( i < 3);
2.3.2 do-while循环的特点
  • 先执行后判断。

2.4 总结三种循环的区别

  • for循环 和 while循环(先判断后执行); do…while (先执行后判断)
  • for循环和while循环的执行流程是一模一样的,功能上无区别,for能做的while也能做,反之亦然。
  • 使用规范:如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
  • 其他区别:for循环中,控制循环的变量只在循环中使用。while循环中,控制循环的变量在循环后还可以继续使用。

2.5 死循环

2.5.1 定义
  • 可以一直执行下去的一种循环,如果没有干预不会停下来。
2.5.2 死循环的写法

写法一

for ( ; ; ) {
System.out.println("Hello World1");
}

写法二(经典写法)

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

写法三

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

2.6 循环嵌套

2.6.1 定义
  • 循环中又包含循环。
for(int i = 0; i < 3; i++) {for(int j = 0; j < 5; j++) {System.out.println("我爱你");}
}
2.6.2 循环嵌套的特点
  • 外部循环每循环一次,内部循环会全部执行完一轮。

3.跳转关键字:break、continue

3.1 种类

  • break : 跳出并结束当前所在循环的执行。
  • continue: 用于跳出当前循环的当次执行,直接进入循环的下一次执行。

3.2 注意事项

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

4.案例:生成随机数

4.1 Random

4.1.1 定义
  • 作用:生成随机数。
4.1.2 实现步骤
  • 导包:告诉程序去JDK的哪个包中找Random
    • import java.util.Random;
  • 写一行代码拿到随机数对象
    • Random r = new Random();
  • 调用随机数的功能获取0-9之间的随机数
    • int number = r.nextInt(10);

注意:

  • 注意:
    nextInt(n) 功能只能生成: 0 至 n-1之间的随机数,不包含n。

5.综合案例

需求:键盘录入考试成绩,根据成绩所在的区间,程序打印出不同的奖励机制

while (true) {/*1.创建一个键盘输入对象,即Scanner对象*/Scanner sc = new Scanner(System.in);/*2.提醒用户输入*/System.out.println("请输入您的成绩:");/*3.获取用户键盘输入的成绩数据,nextDouble意思是用户输入的成绩为小数,否则会报错*/double score = sc.nextDouble();/*4.进行判断*//*|| 逻辑运算符 或的意思,两个条件有一个满足条件即可*/if (score <0 || score > 100){System.out.println("您输入的成绩不符合要求,请重试!");}else{/*&& 逻辑运算符,两个条件必须同时成立*/if(score > 0 && score <60){System.out.println("成绩不合格,奖励一个鸡腿,补一下脑");/*若符合条件则退出循环*/break;}else if(score >=60 && score <80 ){System.out.println("成绩良好,奖励一个小汽车");/*若符合条件则退出循环*/break;}else{System.out.println("成绩优秀,奖励100块钱");/*若符合条件则退出循环*/break;}}}
http://www.xdnf.cn/news/5428.html

相关文章:

  • immutable.js介绍
  • 【Diffusion】在华为云ModelArts上运行MindSpore扩散模型教程
  • 深入浅出之STL源码分析2_stl与标准库,编译器的关系
  • 解决VirtualBox中虚拟机(ubuntu)与主机(windows)之间互相复制粘贴(文本)
  • 文件批量重命名工具,简单高效一键完成更名
  • 【常用算法:排序篇】4.高效堆排序:线性建堆法与蚂蚁问题的降维打击
  • kubectl系列(十二):查询pod的resource 配置
  • Java定时任务
  • Cribl 利用CSV 对IP->hostname 的转换
  • tokenizer.encode_plus,BERT类模型 和 Sentence-BERT 他们之间的区别与联系
  • 数据结构练习:顺序表题目
  • terraform云上实战(一):执行阿里云云助手命令
  • C++ string初始化、string赋值操作、string拼接操作
  • Celery 在分布式任务调度中的实现原理及 MQ 系统对比
  • GIF图像技术介绍
  • 隐马尔可夫模型(HMM)在彩票预测中的Java实现
  • OpenCV进阶操作:指纹验证、识别
  • 复现MAET的环境问题(自用)
  • Javascript基础语法
  • 【STM32开发】-单片机开发基础(以STM32F407为例)
  • SEO长尾关键词布局优化法则
  • 虚拟内存笔记(三)虚拟内存替换策略与机制
  • 前端项目打包部署流程j
  • 北大闰凯博士:热辐射输运问题蒙特卡罗模拟中的全局最优参考场方法
  • HTOL集成电路老化测试学习总结-20250510
  • Linux : 多线程【线程概念】
  • ssh -T git@github.com 测试失败解决方案:修改hosts文件
  • 计算机基础
  • 深入了解linux系统—— 自定义shell
  • 24、TypeScript:预言家之书——React 19 类型系统