11_程序中的循环
程序中的循环
概念:通过某个条件,重复的执行一段逻辑代码
一. while循环
语法:
while(布尔表达式){
//逻辑代码(循环操作)
}
执行流程:
- 先对布尔表达式进行判断,结果为true,则执行逻辑代码
- 本次执行完毕后,再次进行判断,结果仍为true,则再次执行逻代码
- 直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码
题目一:打印100遍HelloWorld
public class TestWhile{ public static void main(String[] args){ //打印100遍HelloWorld int i = 1;//1.初始部分:用于判断的变量 while (i <= 100){//2.循环条件:决定是否继续循环的依据 System.out.println("HelloWorld");//3.循环操作:单次执行的逻辑代码或任务 i++;//4.迭代部分:控制循环条件改变的增量 } System.out.println("程序结束..."); } }
题目二:获取1-100之间所有数字的总和
public class TestGetSum{ public static void main(String[] args){ /* 获取1-100之间所有数字的总和 1.循环100次的问题 2.循环的过程中进行求和 */ int i = 1;//初始部分 int sum = 0; while(i <= 100){//循环条件 sum = sum + i;//循环操作 i++;//迭代部分 } System.out.println("总和为:" + sum); System.out.println("程序结束..."); } }
题目三:求1-100之间所有偶数的和
public class TestGetSum2{ public static void main(String[] args){ /* 求1-100之间所有偶数的和 方案一:获取所有的偶数,相加求和 方案二:依旧获取1-100之间的每一个数字,进行偶数的判断,满足条件后,相加求和 */ int i = 1; int sum = 0; while(i <= 100){ if(i %2 == 0){//判断偶数 sum = sum + i;//求和 } i++; } System.out.println("偶数的和:" + sum); } }
注意:循环有四部分组成
While的特点:
- 首次判断不满足,则一次都不会执行(执行次数:0~n次)
- 首次即有入口条件,先判断、再执行,适用于循环次数明确的情况
二. do while循环
语法:
do{
逻辑代码(循环操作)
}while(布尔表达式);
执行流程:
- 先执行一次循环操作之后,再进行布尔表达式的判断
- 如果结果为true,则再次执行循环操作
- 如果结果为false,才会退出循环结构,执行后续代码
题目四:打印100遍HelloWorld
public class TestDoWhile{ public static void main(String[] args){ //打印100遍HelloWorld int i = 1; do{ System.out.println("打印HelloWorld第" + i + "次"); i++; }while(i <= 100); System.out.println("程度结束..."); } }
题目五:老师批改学生作业
import java.util.Scanner; public class TestDoWhile2{ public static void main(String[] args){ //循环操作:学生抄写代码、教师输入评语 Scanner input = new Scanner(System.in); char answer;//记录老师当次的评语 do{ System.out.println("抄写一遍作业代码。。。。。。"); System.out.println("请输入老师评语:"); answer = input.next().charAt(0);//输入y,表示及格,退出循环;否则继续循环 }while(answer != 'y'); System.out.println("作业已完成"); } }
do while特点:
- 首次没有入口条件,先执行,再判断
- 判断满足,则循环,不满足,则至少执行一次(执行次数:1~n次)
- 适用场景:适用于循环次数不明确的情况
三. for循环
语法:
for(初始部分;循环条件;迭代部分){
//循环操作
}
执行流程:
- 首次执行初始部分(仅一次)
- 对布尔表达式进行判断,结果为true,则执行逻辑代码
- 本次执行完毕后,执行迭代部分,再次判断,结果仍为true,则再次执行逻辑代码
- 直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码
题目六:打印100遍HelloWorld
public class TestFor{ public static void main(String[] args){ //打印100遍HelloWorld //1.初始部分(只执行一次)2.循环条件3.循环操作4.迭代部分 for(int i = 1; i <= 100; i++){ System.out.println("HelloWorld" + i); } System.out.println("程序结束..."); } } //for循环与while循环相同,首次判断不满足,则一次都不会执行。(执行次数:0~n次)
题目七:计算五位同学平均分
import java.util.Scanner; public class TestFor2{ public static void main(String[] args){ Scanner input = new Scanner(System.in); //计算5位同学的平均分 double sum = 0.0;//总和 for(int i = 1; i <= 5; i++){ //1.循环控制台录入分数 System.out.println("请输入第" + i + "位同学的成绩:"); double score = input.nextDouble(); //2.累加总和 sum = sum + score; } double avg = sum / 5; System.out.println("平均分是:" + avg); } }
特点:首次即有入口条件,先判断、再执行,适用于循环次数明确的情况
流程控制语句:
- break:结束整个循环
- Continue:循环执行中,遇到continue,则跳过此次,继续下一个循环
题目八:break
import java.util.Scanner; public class TestBreak{ public static void main(String[] args){ Scanner input = new Scanner(System.in); //控制台录入5位同学成绩,如果有同学成绩不满足(0-100)视为不合法,则退出循环 double sum = 0.0; boolean flag = true;//代表合法 for(int i = 1; i <= 5; i++){ System.out.println("请输入第" + i + "位同学的成绩:"); double score = input.nextDouble(); if(score < 0 || score > 100){ flag = false;//非法数据 break; } sum = sum + score; } if(flag == true){//根据flag标记决定是否要计算平均分 double avg = sum / 5; System.out.println("平均分是:" + avg); }else{ System.out.println("非法数据,请重新运行程序计算平均分"); } } }
题目九:continue
import java.util.Scanner; public class TestContinue{ public static void main(String[] args){ Scanner input = new Scanner(System.in); //控制台录入5位同学成绩,如果有同学成绩不满足(0-100)视为不合法,继续输入直到合法,然后计算5位同学平均分 double sum = 0.0; for(int i = 1; i <= 5; ){ System.out.println("请输入第" + i + "位同学的成绩:"); double score = input.nextDouble(); if(score < 0 || score > 100){ continue; } sum = sum + score; i++; } double avg = sum / 5; System.out.println("平均分是:" + avg); } }
四. 嵌套循环
概念:在一个完整的循环结构中,嵌套另一个完整的循环结构
题目十:打印三行五列星星*
public class TestNestedFor{ /* ***** ***** ***** */ public static void main(String[] args){ for(int i = 1; i <=3; i++){//将内部代码重复3次 for(int j = 1; j <=5; j++){//在一行中打印五颗星 System.out.print("*"); } System.out.println(); } } }
题目十一:计算三个班每班里五位同学平均分
import java.util.Scanner; public class TestNestedFor2{ public static void main(String[] args){ Scanner input = new Scanner(System.in); for(int k = 1; k <= 3; k++){ System.out.println("------第" + k + "班------"); double sum = 0.0; for(int i = 1; i <=5; i++){ System.out.println("请输入第" + i + "位同学的成绩:"); double score = input.nextDouble(); sum += score; } double avg = sum / 5; System.out.println("第" + k + "班五位同学的平均分为:" + avg); } } }
题目十二:用*打印直角三角形
public class TestNestedFor3{ public static void main(String[] args){ /* 打印直角三角形 * ** *** **** ***** */ for(int i =1; i <= 5; i++){//外层控制行数 for(int j = 1; j <= i; j++){//内层控制列数 System.out.print("*"); } System.out.println(); } System.out.println("程序结束"); } }
题目十三:九九乘法口诀
public class TestNestedFor4{ public static void main(String[] args){ for(int i = 1; i <= 9; i++){ for(int j = 1; j <= i; j++){ System.out.print(j + "*" + i + " = " + (j*i) + " "); } System.out.println(); } System.out.println("程序结束"); } }
题目十四:打印等腰三角形
public class TestNestedFor5{ public static void main(String[] args){ /* 打印等腰三角形 */ for (int i = 1; i <= 5; i++){ for (int j = 5; j >=i; j--) { System.out.print(" "); } for (int j = 1; j <= i; j++) { System.out.print("*"); } for (int j = 1; j < i; j++) { System.out.print("*"); } System.out.println(); } System.out.println("程序结束"); } }
本文作者:qimu666
本文链接:https://www.cnblogs.com/qimu666/p/16565622.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步