第十四章 循环语句
作者:张子默
一、循环概述
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
1、循环结构的基本组成部分
-
初始化语句:在循环开始最初执行,而且只做唯一一次。
-
条件判断:如果成立,则循环继续;如果不成立,则循环退出。
-
循环体:重复要做的事情内容,若干行语句。
-
步进语句(步进表达式):每次循环之后都要进行的扫尾工作。
二、for循环
1、语法格式
for (初始化表达式①; 布尔表达式②; 步进表达式④) {
循环体③;
}
2、执行流程
-
执行顺序:①②③④→②③④→②③④…②不满足为止
-
①负责完成循环变量初始化
-
②负责判断是否满足循环条件,不满足则跳出循环
-
③具体执行的语句
-
④循环后,循环条件所涉及变量的变化情况
public static void main(String[] args) {
//控制台输出10次HelloWorld,不使用循环
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐");
//用循环改进,循环10次
//定义变量从0开始,循环条件为<10
for(int x = 0; x < 10; x++) {
System.out.println("HelloWorld"+x);
}
}
3、练习
public class Demo01For {
public static void main(String[] args) {
for(int i=1; i<=100; i++) {
System.out.println("我错了!原谅我吧!" + i);
}
System.out.println("程序停止");
}
}
-
循环练习:使用循环,计算1-100之间的偶数和
public static void main(String[] args) { //1.定义一个初始化变量,记录累加求和,初始值为0 int sum = 0; //2.利用for循环获取1‐100之间的数字 for (int i = 1; i <= 100; i++) { //3.判断获取的数组是奇数还是偶数 if(i % 2==0){ //4.如果是偶数就累加求和 sum += i; } } //5.循环结束之后,打印累加结果 System.out.println("sum:"+sum); }
三、while循环
1、语法格式
初始化表达式①;
while(布尔表达式②) {
循环体③;
步进表达式④;
}
2、执行流程
-
执行顺序:①②③④→②③④→②③④…②不满足为止
-
①负责完成循环变量初始化
-
②负责判断是否满足循环条件,不满足则跳出循环
-
③具体执行的语句
-
④循环后,循环条件所涉及变量的变化情况
-
while循环输出10次HelloWorld
public static void main(String[] args) { //while循环实现打印10次HelloWorld //定义初始化变量 int i = 1; //循环条件<=10 while(i<=10){ System.out.println("HelloWorld"); //步进 i++; } }
-
while循环计算1-100之间的和
public static void main(String[] args) { //使用while循环实现 //定义一个变量,记录累加求和 int sum = 0; //定义初始化表达式 int i = 1; //使用while循环让初始化表达式的值变化 while(i<=100){ //累加求和 sum += i ; //步进表达式改变变量的值 i++; } //打印求和的变量 System.out.println("1‐100的和是:"+sum); }
3、练习
/*
while循环有一个标准格式,还有一个扩展格式。
标准格式:
while(条件判断) {
循环体
}
扩展格式:
初始化表达式;
while(条件判断) {
循环体;
步进表达式;
}
*/
public class Demo02While {
public static void main(String[] args) {
for(int i=1; i<=10; i++) {
System.out.println("我错啦!" + i);
}
System.out.println("==========");
int i = 1; //1.初始化语句
while(i <= 10) { //2.条件判断
System.out.println("我错啦!" + i/*++*/); //3.循环体
i++; //步进表达式
}
}
}
四、do…while循环
1、语法格式
初始化表达式;①
do {
循环体;③
步进表达式;④
}while(布尔表达式②);
2、执行流程
-
执行顺序:①③④→②③④→②③④…②不满足为止。
-
①负责完成循环变量初始化。
-
②负责判断是否满足循环条件。
-
③具体执行语句。
-
④循环后,循环变量的变化情况。
- 输出10次HelloWorld
public static void main(String[] args) {
int x=1;
do {
System.out.println("HelloWorld");
x++;
}while(x<=10);
}
**do…while循环的特定:**无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。这样的循环具有一定的风险性,因此初学者不建议使用do…while循环。
public static void main(String[] args){
do{
System.out.println("无条件执行一次");
}while(false);
}
3、练习
/*
题目:求出1-100之间的偶数和。
思路:
1.既然范围已经确定是1到100之间,那么我就从1、2、3......一直到100这么多数字一个一个进行检查。
2.总共有100个数字,并不是所有数字都能用,必须是偶数才能用,判断(if语句)偶数:num % 2 == 0
3.需要一个变量,用来进行累加操作。也就好比一个存钱罐。
*/
public class Demo04HundredSum {
public static void main(String[] args) {
int sum = 0; //用来累加的存钱罐
for (int i=1; i<=100; i++) {
if(i % 2 == 0) { //如果是偶数
sum += i;
}
}
System.out.println("结果是:" + sum);
}
}
五、三种循环的区别
-
for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。
-
如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。
-
凡是次数确定的场景多用for循环,否则多用while循环,在特定场景会使用do-while循环。
六、循环控制语句
1、break
使用场景:终止switch或者循环
-
在选择结构switch中
-
在循环语句中
-
离开使用场景的存在是没有意义的
public static void main(String[] args) {
for (int i = 1; i<=10; i++) {
//需求:打印完两次HelloWorld之后结束循环
if(i == 3){
break;
}
System.out.println("HelloWorld"+i);
}
}
练习
/*
break关键字的用法有常见的两种:
1.可以用在switch语句当中,一旦执行,整个switch语句立刻结束。
2.还可以使用在循环语句当中,一旦执行,整个循环语句立刻结束。打断循环。
关于循环的选择,有一个小建议:
凡是次数确定的场景多用for循环,否则多用while循环。
*/
public class Demo06Break {
public static void main(String[] args) {
for (int i=1; i <=10; i++) {
//如果希望从第四次开始,后续全都不要了,就要打断循环
if(i==4) { //如果当前是第4次
break; //那么就打断整个循环
}
System.out.println("Hello" + i);
}
}
}
2、continue
使用场景:结束本次循环,继续下一次循环
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
//需求:不打印第三次HelloWorld
if(i == 3){
continue;
}
System.out.println("HelloWorld"+i);
}
}
练习
/*
另一种循环控制语句是continue关键字。
一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环。
*/
public class Demo07Continue {
public static void main(String[] args) {
for (int i=1; i <=10; i++) {
if(i==4) { //如果当前是第4层
continue; //那么跳过当前次循环,马上开始下一次(第五层)
}
System.out.println(i + "层到了!");
}
}
}