[JavaSE] 逻辑控制(二)
目录
循环结构
while 循环
💬 基本语法格式
📝 代码示例2: 计算 1 - 100 的和
📝 代码示例3: 计算 5 的阶乘
📝 代码示例4: 计算 1! + 2! ... + 5!
🔻注意事项
break
continue
for 循环
💬 基本语法
📝 代码示例1: 打印 1 - 10 的数字
📝 代码示例2: 计算 1 - 100 的和
📝 代码示例3: 计算 5 的阶乘
📝 代码示例4: 计算 1! + 2! ... + 5!
🔻注意事项 (和while循环类似)
do while 循环(选学)
💬 基本语法
📝 代码示例: 打印 1 - 10
疫情当前,大家要做好防护哦。
带好口罩了嘛?
那么大家跟着Nick来学习今天的知识!
循环结构
while 循环
💬 基本语法格式
while(循环条件){ 循环语句; }
🔴 循环条件为 true, 则执行循环语句; 否则结束循环
📝 代码示例1: 打印 1 - 10 的数字
int num = 1; while (num <= 10) { System.out.println(num); num++; }
📝 代码示例2: 计算 1 - 100 的和
int n = 1; int result = 0; while (n <= 100) { result += n; n++; } System.out.println(num);// 执行结果 5050
📝 代码示例3: 计算 5 的阶乘
int n = 1; int result = 1; while (n <= 5) { result *= n; n++; } System.out.println(num); // 执行结果 120
📝 代码示例4: 计算 1! + 2! + 3! + 4! + 5!
int num = 1; int sum = 0; // 外层循环负责求阶乘的和 while (num <= 5) { int factorResult = 1; int tmp = 1; // 里层循环负责完成求阶乘的细节. while (tmp <= num) { factorResult *= tmp; tmp++; } sum += factorResult; num++; } System.out.println("sum = " + sum);
🔴 这里我们发现, 当一个代码中带有多重循环的时候, 代码的复杂程度就大大提高了. 而比较复杂的代码就更容易出错。 后面我们会采用更简单的办法来解决这个问题。
🔻注意事项
- 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }。
- 和 if 类似, while 后面的 { 建议和 while 写在同一行。
- 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行。
🔴 此时 ; 为 while 的语句体(这是一个空语句), 实际的 { } 部分和循环无关. 此时循环条件 num <= 10 恒成立, 导致代码 死循环 了。
break
🔵 break 的功能是让循环提前结束。
📝 代码示例: 找到 100 - 200 中第一个 3 的倍数
int num = 100; while (num <= 200) { if (num % 3 == 0) { System.out.println("找到了 3 的倍数, 为:" + num); break; } num++; } // 执行结果 找到了 3 的倍数, 为:102
🔵 执行到 break 就会让循环结束
continue
🔴 continue 的功能是跳过这次循环, 立即进入下次循环。
📝 代码示例: 找到 100 - 200 中所有 3
int num = 100; while (num <= 200) { if (num % 3 != 0) { num++; // 这里的 ++ 不要忘记! 否则会死循环. continue; } System.out.println("找到了 3 的倍数, 为:" + num); num++; }
🔴 执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句。
for 循环
💬 基本语法
for(表达式1;表达式2;表达式3){ 循环体; }
💠 表达式1: 用于初始化循环变量.
💠 表达式2: 循环条件
💠 表达式3: 更新循环变量
🔵 相比于 while 循环, for 循环将这三个部分合并在一起, 写代码时不容易遗漏
📝 代码示例1: 打印 1 - 10 的数字
for (int i = 1; i <= 10; i++) { System.out.println(i); }
📝 代码示例2: 计算 1 - 100 的和
int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; } System.out.println("sum = " + sum);// 执行结果 5050
📝 代码示例3: 计算 5 的阶乘
int result = 0; for (int i = 1; i <= 5; i++) { result *= i; } System.out.println("result = " + result);
📝 代码示例4: 计算 1! + 2! + 3! + 4! + 5!
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);
🔻注意事项 (和while循环类似)
- 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句。 建议还是加上 { }
- 和 if 类似, for 后面的 { 建议和 while 写在同一行。
- 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行。
do while 循环(选学)
💬 基本语法
do{ 循环语句; }while(循环条件);
🔴 先执行循环语句, 再判定循环条件
📝 代码示例: 打印 1 - 10
int num = 1; do { System.out.println(num); num++; } while (num <= 10)
🔻 注意事项
- do while 循环最后的分号不要忘记。
- 一般 do while 很少用到, 更推荐使用 for 和 while。
大概逻辑控制就这些内容啦!
还剩下输入输出没有具体讲,
接下来练练手趴。
1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)2. 判定一个数字是否是素数3. 打印 1 - 100 之间所有的素数4. 输出 1000 - 2000 之间所有的闰年5. 输出乘法口诀表6. 求两个正整数的最大公约数7. 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。8. 编写程序数一下 1到 100 的所有整数中出现多少个数字9。9. 求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。)10. 编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输入,最多输入三次。三次均错,则提示退出程序11. 写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 112. 获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。13. 输出一个整数的每一位.14. 完成猜数字游戏
点我查看答案(3.23公布)