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 = 0;
for (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;}}}