每日正能量
趁你现在还有时间,尽你自己最大的努力,努力做成你最想做的那件事,成为你最想成为的那种人,过着你最想过的那种生活。这个世界永远比你想的要更精彩,不要败给生活。
循环结构
【本章内容】1. while循环 2. do-while循环 3. for循环 |
【能力目标】1. 掌握信息的循环输出 2. 学会使用循环解决程序问题 3. 能够区分每种循环的应用场合 |
有些程序段在某些条件下重复执行多次,称为循环结构程序。Java提供了3种循环语句实现循环结构,包括while语句、do-while语句、for语句。它们的共同点是根据给定条件来判断是否继续执行指定的程序段(循环体)。如果满足执行条件,就继续执行循环体,否则就不再执行循环体,结束循环语句。
1. while循环结构
while循环的语法如下:
while(布尔表达式){
循环体;
}
说明:
布尔表达式表示循环体执行的条件,当条件为true时执行循环体。
循环体既可以是一条简单的语句,也可以是复合语句。
while语句的执行过程是:计算布尔表达式的值,如果其值是true,执行循环体;再计算布尔表达式的值,如果其值是true,再执行循环体,形成循环,直到布尔表达式的值变为false,结束循环。
图 While循环流程图
这里我们举一个例子
使用while循环实现数字累加求和 |
---|
使用while循环,计算1+2+3+....+100的和,并显示结果 |
代码示例
public class Task1 {
public static void main(String[] args) {
int i = 1,sum = 0;
while(i<=100){
sum+=i;
i++;
}
System.out.println("1+2+3+...+100的和是"+sum);
}
}
带你分析代码:
程序中定义int类型的变量i,初始化为1,定义int类型变量sum,用于存储累加的和。在while循环条件中,当i的值<=100时,进入循环体,在循环体内部先将i的值累加到变量sum中,再将变量i自增。循环体执行结束后再次回到while的循环条件中,如果i的值<=100再次进入循环体,否则结束循环。最后输出累加的和。
while循环的特点是先判断,再执行。
运行结果
1+2+3+...+100的和是5050
2. do-while循环结构
do-while循环的语法如下:
do{
循环体;
}while(布尔表达式);
说明:
布尔表达式表示循环执行的条件。
循环体既可以是一条语句,也可以是语句序列。
do-while语句执行的过程是:执行循环体,计算布尔表达式的值,如果其值为true,再执行循环体,形成循环,直到布尔表达式的值变为false,结束循环,执行do-while语句后的语句。
图 do-while循环流程图
注意:
1. do-while语句执行时最少执行一次,因为先执行循环体,再判断表达式
2. while语句执行时最少执行零次,因为先判断表达式,再执行循环体
这里我们举一个例子
使用do-while循环实现数字累加求和 |
---|
使用do-while循环,计算1+2+3+...+100的和,并显示结果 |
代码示例
public class Task2 {
public static void main(String[] args) {
int i = 1,sum = 0;
do{
sum+=i;
i++;
}while(i<=100);
System.out.println("1+2+3+...+100的和是"+sum);
}
}
带你分析代码:
程序中定义int类型的变量i,初始化为1,定义int类型变量sum,用于存储累加的和。当程序进入do-while循环时,首先进入循环体,在循环体内部先将i的值累加到变量sum中,再将变量i自增。然后判断i<=100吗,如果判断条件的值为true,程序就会再次进入循环体,否则退出循环。最后输出累加的和。
do-while循环的特点是先执行,再判断。
运行结果
1+2+3+...+100的和是5050
3. for循环结构
for循环的语法结构:
for(表达式1; 表达式2; 表达式3){
循环体;
}
说明:
表达式1的作用是给循环变量初始化。
表达式2的作用是给出循环条件。
表达式3的作用是改变循环变量的值。
循环体可以是一条或多条语句。
for循环的执行过程是:执行表达式1,计算表达式2,如果表达式2的值为true,执行循环体,执行表达式3,改变循环变量的值,再计算表达式2的值,如果是true,再进入循环体,形成循环,直到表达式2的值为false,结束循环,执行for后面的语句。
图 for循环流程图
这里我们举一个例子
使用for循环实现数字累加求和 |
---|
使用for循环,计算1+2+3+...+100的和,并显示结果 |
代码示例
public class Task3 {
public static void main(String[] args) {
int sum = 0;
for (int i = 0; i < 101 ; i++) {
sum += i;
}
System.out.println("1+2+3+...+100的和是"+sum);
}
}
带你分析代码:
定义int类型变量sum,用于存储累加的和。当程序进入for循环时,首先执行表达式1,为循环变量i初始化为1,然后执行表达式2,判断i<101是否为true,如果为true进入循环体,将i的值累加到变量sum中,再执行表达式3,将循环变量的值i加1,再执行表达式2,判断i<101是否成立,如果成立再进入循环体,形成循环,否则结束for循环。最后输出累加的和。
for循环通常用在已知循环次数的情况下。
运行结果
1+2+3+...+100的和是5050
问题
至此,我们学习了for、while、do-while循环,这三种循环在使用时有什么区别呢?如何鉴别用哪一种循环来解决开发中的问题呢?下表给出了三种循环在使用上的区别。
for | 通常用在已知循环次数的情况下 |
---|---|
while | 先判断条件,满足就执行循环体,不满足则退出 |
do-while | 先执行一次循环体,再判断条件,如果条件满足,继续执行,不满足,退出循环,最少执行一次 |
4. break语句
在Java语言中,提供了break和continue语句,可用于控制流程转移。break语句可用于switch语句或while、do-while、for循环语句,如果程序执行到break语句,立即从switch语句或循环语句退出。
这里我们举一个例子
使用break跳出循环 |
---|
使用while循环计算1+2+3+...,当和超过100时,结束循环,输出一共相加了多少个数 |
代码示例
public class Task4 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while(true){
sum+=i;
if(sum>100){
break;
}
i++;
}
System.out.println("1+2+3+...加到第"+i+"个数时,和超过了100");
}
}
带你分析代码:
定义int类型变量sum,初始化为0,用于存储累加的和,定义int类型变量i,初始化为1,用于控制循环次数。
while(true)表示循环条件永远成立。
if(sum>100)表示终止条件成立,执行break语句,即跳出循环体,执行while循环后面语句。
运行结果
1+2+3+...加到第14个数时,和超过了100
5. continue语句
continue语句可用于for、do-while、while语句的循环体中,如果程序执行到continue语句,则结束本次循环,回到循环条件处,判断是否执行下一次循环。
这里我们举一个例子
使用continue停止本次循环,进入下一次循环 |
---|
使用for循环计算1+2+3+...+100的和,但要去除7的倍数 |
public class Task5 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <=100; i++) {
if(i%7==0){
continue;
}
sum += i;
}
System.out.println("1+2+3+...+100去除7的倍数的和是"+sum);
}
}
带你分析代码:
定义int类型变量sum,初始化为0,用于存储累加的和。
for循环中定义int类型变量i,初始化为1,用于控制循环次数。
当i<=100时进入循环体。
当i%7==0的值为true时,表示i的值是7的倍数,执行continue语句,即结束本次循环,进入下一次循环。
运行结果
1+2+3+...+100去除7的倍数的和是4315
6. 多重循环
如果循环语句的循环体中又包含循环语句,就形成了多重循环结构,称为循环嵌套。被包含的循环称为内循环,包含的循环称为外循环。常用的循环嵌套是二重嵌套和三重嵌套。循环嵌套既可以是一种循环自身的嵌套,也可以是不同循环语句相互嵌套。例如:
for( ; ; ) { //外循环开始
for ( ; ; ) { //内循环开始
} //内循环结束
} //外循环结束
这里我们举一个例子
双循环输出乘法口诀表 |
---|
使用双重for循环输出乘法口诀表 |
public class Task6 {
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i + "*" + j + "=" + (i*j)+"\t");
}
System.out.println();
}
}
}
带你分析代码:
1. 外循环循环变量i初始化为1,i < 10,共循环9次,System.out.println();可使得外循环每循环一次换一行。
2. 内循环循环变量j初始化为1,j <= i,即第i行产生i列。
运行结果