Java 流程控制语句——循环结构
Java 流程控制语句大致分为三大结构:顺序结构、分支结构、选择结构。
其中顺序结构是程序默认的执行流程,按代码顺序从上到下依次执行的,就不过多的赘述了。
需要重复执行某段程序代码的情况是很常见的,所以在程序中提供了循环语句便于我们使用。
一、for 循环语句
for 循环语句是最常见的循环语句之一。
for 循环语句格式:
for(初始化语句; 条件判断语句; 条件控制语句){
循环体语句; //循环体语句,要重复执行的代码
}
for 循环语句执行流程:
- 执行初始化语句
- 执行条件判断语句,看其结果是 true 还是 false;如果结果为 true 则执行循环体语句;如果结果为 false 则结束循环
- 执行条件控制语句
- 返回第二步继续执行条件判断语句
例1:使用程序重复打印 10 遍 Hello World
public class Demo{
public static void main(String[] args){
for(int i = 1; i <= 10; i++){
System.out.println("Hello World");
}
}
}
例2:使用 for 循环语句,顺序打印数字 1~5,输出结果示例:1 2 3 4 5
说明:
System.out.println(); 是换行的输出,输出结果后会换行
System.out.print(); 是不换行输出,输出结果后不换行
\t 为转义字符,相当于 Tab 键,表示空 8 个空格的位置
public class Demo{
public static void main(String[] args){
for(int i = 1; i <= 5; i++){
System.out.print(i+"\t");
}
}
}
例3:使用 for 循环语句,逆序输出数字 1~5,输出结果示例:5 4 3 2 1
public class Demo{
public static void main(String[] args){
for(int i = 5; i >= 1; i--){
System.out.print(i+"\t");
}
}
}
例4:计算 1 + 2 + 3 + 4 + 5 的和
public class Demo{
public static void main(String[] args){
int sum = 0; //定义整型变量 sum,并赋初值为0,用于存放最后的结果
/*
循环执行过程:
初始化语句:int i = 1;
条件判断语句:i <= 5
条件控制语句:i++
当 i = 1 时,sum = 1,i 的值变为 2
当 i = 2 时,sum = 1 + 2,i 的值变为 3
当 i = 3 时,sum = 1 + 2 + 3,i 的值变为 4
当 i = 4 时,sum = 1 + 2 + 3 + 4,i 的值变为 5
当 i = 5 时,sum = 1 + 2 + 3 + 4 + 5,i 的值变为 6
当 i = 6 时,不满足条件 i <= 5,结束整个循环
*/
for(int i = 1; i <= 5; i++){
sum += i; //sum += i 相当于 sum = sum + i
}
System.out.println("1 + 2 + 3 + 4 + 5 = " + sum); //输出最后累加得到的结果
}
}
例5:计算 5!(说明:5!= 5 × 4 × 3 ×2 × 1)
public class Demo{
public static void main(String[] args){
int sum = 1; //定义整型变量 sum,并赋初值为1,用于存放最后的结果
/*
循环执行过程:
初始化语句:int i = 1;
条件判断语句:i <= 5
条件控制语句:i++
当 i = 1 时,sum = 1,i 的值变为 2
当 i = 2 时,sum = 1 * 2,i 的值变为 3
当 i = 3 时,sum = 1 * 2 * 3,i 的值变为 4
当 i = 4 时,sum = 1 * 2 * 3 * 4,i 的值变为 5
当 i = 5 时,sum = 1 * 2 * 3 * 4 * 5,i 的值变为 6
当 i = 6 时,不满足条件 i <= 5,结束整个循环
*/
for(int i = 1; i <= 5; i++){
sum *= i; //sum *= i 相当于 sum = sum * i
}
System.out.println("5!= " + sum)
}
}
二、while 和 do ··· while 循环语句
1、while 循环语句
while 循环语句用法和 for 循环语句用法差不多
while 循环语句格式:
初始条件语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
while 循环语句执行流程:
==先判断后执行,至少执行 0 次循环==
- 执行初始化语句
- 执行条件判断语句,看其结果是 true 还是 false;如果结果为 true 则执行循环体语句;如果结果为 false 则结束循环
- 执行条件控制语句
- 返回第二步继续执行条件判断语句
例:使用 while 循环顺序打印数字 1~5,输出结果示例:1 2 3 4 5
public class Demo{
public static void main(String[] args){
int i = 1;
while(i <= 5){
System.out.println(i + "\t");
}
}
}
2、do ··· while 循环语句
do ··· while 循环语句格式:
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
do ··· while 循环语句执行流程 :
==先执行后判断,至少执行 1 次循环==
例:使用 do ··· while 循环逆序打印数字 1~5,输出结果示例:5 4 3 2 1
public class Demo{
public static void main(String[] args){
int i = 5;
do{
System.out.print(i + "\t");
i--;
}while(i >= 1);
}
}
三、循环的嵌套
在编程中,循环体中也可以嵌套其他循环
嵌套循环执行流程:
- 当外层循环执行第 1 次时,内层循环需要执行完自己所有的次数之后,才会继续执行第 2 次外循环
- 当外层循环执行第 2次时,内层循环需要执行完自己所有的次数之后,才会继续执行第 3 次外循环
- 依次类推,直到循环全部结束
例1:打印输出九九乘法表
public class Demo{
public static void main(String[] args){
for(int i = 1; i <= 9; i++){
for(int j = 1; j<=9; j++){
System.out.print(i + " + " + j + " = " + i * j + "\t");
}
System.out.println();
}
}
}
例2:上面 例1 中打印的乘法表不够简洁,所以我们重新打印输出一个我们常见的正三角九九乘法表
public class Demo{
public static void main(String[] args){
for(int i = 1; i <= 9; i++){
for(int j = 1; j<=i; j++){
System.out.print(i + " + " + j + " = " + i * j + "\t");
}
System.out.println();
}
}
}
四、跳转控制语句
当我们在循环中,需要跳出循环时就可以使用跳转控制语句:continue 和 break 实现跳出循环。
==continue:只跳过跳过本次循环,继续执行下次循环==
例:输出数字 1~10,但是不输出是 3 的倍数的数字,输出示例:1 2 4 5 7 8 10
public class Demo{
public static void main(String[] args) {
for(int i = 1; i <= 10; i++){
if(i % 3 == 0){
continue; //满足 if 条件,跳出本次循环,执行下一次循环
}
System.out.print(i + "\t");
}
}
}
==break:直接结束整个循环流程==
例:输出数字 1~10,但是不输出大于 7 的数字,输出结果示例:1 2 3 4 5 6 7
public class Demo{
public static void main(String[] args) {
for(int i = 1; i <= 10; i++){
if(i > 7){
break; //满足 if 条件,直接结束整个循环流程
}
System.out.print(i + "\t");
}
}
}
五、小结
for 循环语句和 while 循环语句区别:
- ==for 循环语句适用于知道 循环次数 或 循环范围 的情况==
- ==while 循环语句适用于只知道 循环条件,不知道 循环次数 或 循环范围 的情况==
如果需要在循环过程中跳出循环可以适用 continue 和 break 实现
- ==continue:只跳过本次循环,继续执行下次循环==
- ==break:直接结束整个循环==
如果文章对各位小伙伴有帮助的话欢迎三连!!!
另外,文章如有错误之处,也欢迎各位大佬批评指正!!!