【JAVASE】循环结构 超、凢脫俗 2024-04-23 20:25 85阅读 0赞 > ⭐ 作者:小胡\_不糊涂 > ? 作者主页:[小胡\_不糊涂的个人主页][Link 1] > ? 收录专栏:[浅谈Java][Java] > ? 持续更文,关注博主少走弯路,谢谢大家支持 ? #### 循环 #### * 1. 循环结构 * * 1.1 while 循环 * 1.2 break * 1.3 continue * 1.4 for 循环 * 1.5 do...while循环 * 2. 输入输出 * * 2.1 输出到控制台 * 2.2 从键盘输入 * ?彩蛋 * * 猜数字游戏 ## 1. 循环结构 ## ### 1.1 while 循环 ### **基本语法格式:** while(循环条件){ 循环语句; } 循环条件为 true,则执行循环语句;否则结束循环。 `一个循环,肯定有开始,有结束` **实例1:打印 1-10 的数字** public static void main(String[] args) { int num = 1; while (num <= 10) { System.out.println(num); num++; } } ? *运行结果:* ![在这里插入图片描述][10516309aa244fd5a17e79021093189a.png] **实例2:计算 1-100 的和** public static void main(String[] args) { int n = 1; int sum = 0; while (n <= 100) { sum += n;//sum=sum+n,实现累加 n++; } System.out.println(sum); } ? *运行结果:* ![在这里插入图片描述][dff91809cd0b4254807e4f8d2741969c.png] **实例3:求 1-100 以内偶数的和** //1-100偶数的和 public static void main(String[] args) { int sum1 = 0; int a = 2; while (a <= 100) { sum1 += a; a += 2; } System.out.println(sum1); } //1-100奇数的和 public static void main(String[] args) { int sum2 = 0; int a = 1; while (a <= 100) { sum2 += a; a += 2; } System.out.println(sum2); } **实例4:计算 5 的阶乘** > 5!=5*4*3*2*1 > 4!=4*3*2*1 > 3!=3*2*1 > 2!=2*1 > 1!=1 > 0!=1 public static void main(String[] args) { int n = 1; int result = 1; while (n <= 5) { result *= n;//累乘 n++; } System.out.println(result); } ? *运行结果:* ![在这里插入图片描述][6a7efc824d144c59aa38d678036dfe54.png] **实例5:计算 1!+2!+…+5!** > 这里既要算加法,还要算阶乘。在每一个数字阶乘计算后,然后求和,我们可以采用嵌套循环,内循环负责求阶乘,外循环负责求和。 public static void main(String[] args) { int num = 1; int sum = 0; // 外层循环负责求阶乘的和 while (num <= 5) { int k = 1; int i = 1; // 里层循环负责完成求阶乘 while (i <= num) { k *= i;//k=k*i i++; } sum += k;//sum=sum+k num++; } System.out.println("sum = " + sum); } ? *运行结果:* ![在这里插入图片描述][3860aa8c73af44ea82d77c456eafb378.png] **实例6:找到1-100之间既能被3整除也能被5整除的数** public static void main(String[] args) { int i = 1; while (i <= 100) { if(i % 15 != 0) { i++; continue;//有关continue的介绍在下面 } System.out.println(i); i++; } } ? *运行结果:* ![在这里插入图片描述][7ec08e7a215a43d9bf389c10a6f5390b.png] 注: * 和 if 类似,while 下面的语句可以不写 \{ \} ,但是不写的时候只能支持一条语句,建议还是加上 \{ \}。 * 和 if 类似,while 后面的 \{ 建议和 while 写在同一行。 * 和 if 类似,while 后面不要多写分号,否则可能导致循环不能正确执行。 比如: int num = 1; while (num <= 10); { System.out.println(num); num++; } //[无任何输出, 程序死循环] 这里为 while 的语句体(这是一个空语句),实际的 \{ \} 部分和循环无关,此时循环条件 num <= 10 恒成立,导致代码**死循环**。 ### 1.2 break ### break 的功能是让循环提前结束 **实例:找到 100 - 200 中第一个 3 的倍数** public static void main(String[] args) { int num = 100; while (num <= 200) { if (num % 3 == 0) { System.out.println("找到了 3 的倍数, 为:" + num); break; } num++; } } ? *运行结果:* ![在这里插入图片描述][ef207868df4348ef8778134b2d314c0e.png] `执行到 break 就会让循环结束。` ### 1.3 continue ### continue 的功能是跳过这次循环,立即进入下次循环 **实例:找到 100 - 200 中所有 3 的倍数** public static void main(String[] args) { int num = 100; while (num <= 200) { if (num % 3 != 0) { num++; // 这里的 ++ 不要忘记! 否则会死循环. continue; } System.out.println("找到了 3 的倍数, 为:" + num); num++; } } ? *运行结果:* ![在这里插入图片描述][a847071e92ec4d309482118e45aeefaf.png] 执行到 continue 语句的时候,就会立刻进入下次循环(判定循环条件),从而不会执行到下方的打印语句。 ### 1.4 for 循环 ### **基本语法:** for(表达式1;布尔表达式2;表达式3){ 表达式4; } > 表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次 > 表达式2: 循环条件,满足则循环继续,否则循环结束 > 表达式3: 循环变量更新方式 **实例1:打印 1-10 的数字** public static void main(String[] args) { for (int i = 1; i <= 10; i++) { System.out.println(i); } } ? *运行结果:* ![在这里插入图片描述][879bcefbe5d44a67aafd0f1748e4f70d.png] **实例2:计算 1-100 的和** public static void main(String[] args) { int sum=0; for (int i = 1; i <= 100; i++) { sum += i;//sum=sum+i 累加 //第一次:sum=0+1=1 //第二次:sum=1+2=3 //第三次:sum=3+3=6... } System.out.println("sum = " + sum); } **实例3:计算 5 的阶乘** public static void main(String[] args) { int result = 1; for (int i = 1; i <= 5; i++) { result *= i; //第一次:result=1*1=1 //第二次:result=1*2=2 //第三次:result=2*3=6... } System.out.println("result = " + result); } **实例4:计算 1!+2!+…+5!** public static void main(String[] args) { int sum = 0; //外循环:求和 for (int i = 1; i <= 5; i++) { int tmp = 1; //内循环:计算每位数字的阶乘 for (int j = 1; j <= i; j++) { tmp *= j; } sum += tmp; } System.out.println("sum = " + sum); } 注: * 和 if 类似,for 下面的语句可以不写 \{ \} ,但是不写的时候只能支持一条语句,建议还是加上 \{ \}。 * 和 if 类似,for 后面的 \{ 建议和 while 写在同一行。 * 和 if 类似,for 后面不要多写分号,否则可能导致循环不能正确执行。 * 和while循环一样,结束单趟循环用continue,结束整个循环用break。 ### 1.5 do…while循环 ### **基本语法:** do{ 循环语句; }while(循环条件); 先执行循环语句,再判定循环条件,循环条件成立则继续执行,否则循环结束。 **实例: 打印 1-10 的数字** public static void main(String[] args) { int num = 1;//num 的初始条件 do { System.out.println(num); num++; } while (num <= 10);//循环条件 } 注: * do while 循环最后的分号不要忘记。 * 一般 do while 很少用到, 更推荐使用 for 和 while。 * 无论是否满足循环条件,都会先执行一次循环语句。 ## 2. 输入输出 ## ### 2.1 输出到控制台 ### **基本语法:** System.out.println(msg); // 输出一个字符串, 带换行 System.out.print(msg); // 输出一个字符串, 不带换行 System.out.printf(format, msg); // 格式化输出 > println 输出的内容自带 \\n,print 不带 \\n。(\\n:换行) > printf 的格式化输出方式和 C 语言的 printf 是基本一致的。 代码示例: public static void main(String[] args) { System.out.println("hello world");//直接打印 hello world int x = 10; System.out.printf("x = %d\n", x);//打印 x=10 } 格式化字符串 <table> <thead> <tr> <th>转换符</th> <th>类型</th> <th>举例</th> <th>结果</th> </tr> </thead> <tbody> <tr> <td>d</td> <td>十进制整数</td> <td>(“%d”,100)</td> <td>100</td> </tr> <tr> <td>x</td> <td>十六进制整数</td> <td>(“%x”,100)</td> <td>64</td> </tr> <tr> <td>o</td> <td>八进制整数</td> <td>(“%o”,100)</td> <td>144</td> </tr> <tr> <td>f</td> <td>定点浮点数</td> <td>(“%f”,100f)</td> <td>100.000000</td> </tr> <tr> <td>s</td> <td>字符串</td> <td>(“%s”,100)</td> <td>100</td> </tr> <tr> <td>c</td> <td>字符</td> <td>(“%c”,‘1’)</td> <td>1</td> </tr> <tr> <td>b</td> <td>布尔值</td> <td>(“%b”,100)</td> <td>true</td> </tr> <tr> <td>%</td> <td>百分号</td> <td>(“%.2f%%”,2/7f)</td> <td>0.29%</td> </tr> </tbody> </table> ### 2.2 从键盘输入 ### > 使用 Scanner 读取字符串/整数/浮点数 import java.util.Scanner; // 需要导入 util 包 public class Cycle_logitic { public static void main(String[] args) { Scanner sc = new Scanner(System.in);//输入,sc 由用户自己定义 System.out.println("请输入你的姓名:");//输出 String name = sc.nextLine(); System.out.println("请输入你的年龄:"); int age = sc.nextInt(); System.out.println("请输入你的工资:"); float salary = sc.nextFloat(); System.out.println("你的信息如下:"); System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary); sc.close(); // 注意, 要记得调用关闭方法 } ? *运行结果:* ![在这里插入图片描述][19025fb311354e2788210964ba5b4ebc.png] > 使用 Scanner 循环读取 N 个数字,并求取其平均值 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int sum = 0; int num = 0; while (sc.hasNextInt()) { int tmp = sc.nextInt();//输入 sum += tmp;//求和 num++; } //输出 System.out.println("sum = " + sum); System.out.println("avg = " + sum / num);//计算均值 sc.close(); } ? *运行结果:* ![在这里插入图片描述][3f47a2666fb54a13af80e1998fb63d79.png] ## ?彩蛋 ## ### 猜数字游戏 ### > **玩法**:玩家随便输入1-100以内的整数,计算机会提示你是否猜对,如果没猜对,会告诉玩家是猜大了还是猜小了,然后用户继续猜数,直到成功。 程序设计关键: * 如何设置 1-100 以内的随机数 * 判断随机数与用户输入的值的大小 * 在猜对前,用户如何循环输入数字 * 猜对后又如何结束循环 **1. 在 Java 中设置随机数需要用到一个包:** import java.util.Random; 如果想要控制在 100 以内,代码实现是: Random random = new Random(); // 默认随机种子是系统时间 int toGuess = random.nextInt(100);//设置范围:[0-100)+1 **2. 用户输入数字:** 上文已经总结过,如何输入一个数字。用户输入时也需要一个包: import java.util.Scanner; //实现输入数字 Scanner sc = new Scanner(System.in);//这里的 sc 由用户自定义 **3. 判断用户输入的数字大小:** 这里我们用 if 语句处理: int num = sc.nextInt();//将输入的数字赋给 num if (num < toGuess) { System.out.println("低了"); } else if (num > toGuess) { System.out.println("高了"); } else { System.out.println("猜对了"); break;//跳出循环 } **4. 然后我们将代码整合一下:** import java.util.Scanner; import java.util.Random; public static void main(String[] args) { Random random = new Random(); // 默认随机种子是系统时间 Scanner sc = new Scanner(System.in); int toGuess = random.nextInt(100); while (true) { System.out.println("请输入要输入的数字: (1-100)"); int num = sc.nextInt(); if (num < toGuess) { System.out.println("低了"); } else if (num > toGuess) { System.out.println("高了"); } else { System.out.println("猜对了"); break; } } sc.close(); } ? *运行结果:* ![在这里插入图片描述][4b22022089c34f4cbc5d0da8d9901e68.png] `这只是简易版的猜数字游戏,你还可以用 switch 语句去设置一个菜单选项控制游戏的开始等等功能,去美化你的游戏` -------------------- ![在这里插入图片描述][db87c091de24452aa00208d9f98af9f7.png] [Link 1]: https://blog.csdn.net/iLoyo_?type=blog [Java]: https://blog.csdn.net/iloyo_/category_12388822.html?spm=1001.2014.3001.5482 [10516309aa244fd5a17e79021093189a.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/704d4e92d63640dbb68eadeb12b973e3.png [dff91809cd0b4254807e4f8d2741969c.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/26f1c82829dc45c5bae15ab1737ba7ac.png [6a7efc824d144c59aa38d678036dfe54.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/6142d13f9b1944cea1e51679481d7219.png [3860aa8c73af44ea82d77c456eafb378.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/bebc31bd693e4b2c82a117e432d42686.png [7ec08e7a215a43d9bf389c10a6f5390b.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/b886e38f93e94b4eb021826bee195027.png [ef207868df4348ef8778134b2d314c0e.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/68ca1c51e037448686a3c15e21c54586.png [a847071e92ec4d309482118e45aeefaf.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/b05af8456f2a4c45aade202b4bbd63f0.png [879bcefbe5d44a67aafd0f1748e4f70d.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/6e6bb763da774b208ec96a21669ace8d.png [19025fb311354e2788210964ba5b4ebc.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/610f8cd6a0ee4fe0beb10dec17657469.png [3f47a2666fb54a13af80e1998fb63d79.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/62c5d8359c3142a79f55824649c153cb.png [4b22022089c34f4cbc5d0da8d9901e68.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/fda40a83e21a4a61828aa21d801a4387.png [db87c091de24452aa00208d9f98af9f7.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/23/7a37cfb39d8e4d5389eb648c77d9ac49.png
相关 【JavaSE专栏10】Java的顺序结构、选择结构和循环结构 > 作者主页:[Designer 小郑][Designer] > 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、 港控/mmm°/ 2023年09月24日 18:04/ 0 赞/ 73 阅读
相关 循环结构 for循环打印 编写程序从1循环到150,并在每行打印一个值,另外在每个3的倍数行 上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印 刺骨的言语ヽ痛彻心扉/ 2023年07月03日 08:28/ 0 赞/ 132 阅读
相关 循环结构 1. 程序的三大结构 顺序:代码自上而下,按顺序执行 分支:根据指定的条件,选择不同的过程执行 循环:重复 2. 循环的意义: 布满荆棘的人生/ 2023年02月18日 09:50/ 0 赞/ 31 阅读
相关 循环结构 1. 程序的三大结构 顺序:代码自上而下,按顺序执行 分支:根据指定的条件,选择不同的过程执行 循环:重复 2. 循环的意义: 清疚/ 2023年02月18日 09:49/ 0 赞/ 37 阅读
相关 循环结构 一、while 语句格式 初始化条件表达式; while( 条件表达式 )//当条件为真时,一直循环执行里面的语句,死循环,所以一般需要对条件进行控制 { / 女爷i/ 2022年06月01日 09:18/ 0 赞/ 275 阅读
相关 循环结构 循环类型 - while循环 语法: int i=1;//循环的变量初始化 while(条件表达式)\{//条件i<=10 循环体语句;//输出语句i 一时失言乱红尘/ 2021年11月29日 09:24/ 0 赞/ 448 阅读
还没有评论,来说两句吧...