概述
高级循环综合练习
一、小老虎吃包子1
-
需求:
- 小老虎吃包子,第三个包子有虫子,跳过。
-
实现:
package com.app.demo9_advanced_loop_practice; /** 高级循环综合练习 小老虎吃包子: 吃到第三个包子的时候,发现有虫子,跳过 */ public class AdvancedLoopDemo1 { public static void main(String[] args) { // 1、定义包子数量 int bum = 5; for (int i = 1; i <= bum; i++) { // 判断是否为第3个包子 if (i == 3) { // true: 说明第3个包子有虫子 System.out.println("第" + i + "个包子有虫子~ 小老虎不吃~"); continue; // 跳过不吃:结束本次循环,继续下次循环 } System.out.println("小老虎正在开心的吃着第" + i + "个包子~~"); } } }
二、小老虎吃包子2
-
需求:
- 小老虎吃包子,吃完第三个包子的时候饱了。
-
实现:
package com.app.demo9_advanced_loop_practice; /** 高级循环的综合练习 小老虎吃包子: 吃完第三个包子就饱了 */ public class AdvancedLoopDemo2 { public static void main(String[] args) { // 1、定义变量,存储包子的数量 int bum = 10; for (int i = 1; i <= bum; i++) { System.out.println("小老虎开开心心的吃着第" + i + "个包子~~~"); // 判断小老虎是否吃完了第3个包子 if (i == 3) { System.out.println("小老虎吃饱了~~"); break; // 跳出整个循环 } } } }
- 控制台输出结果:
小老虎开开心心的吃着第1个包子~~~ 小老虎开开心心的吃着第2个包子~~~ 小老虎开开心心的吃着第3个包子~~~ 小老虎吃饱了~~ Process finished with exit code 0
三、逢7过
-
需求:
- 朋友聚会的时候可能会玩一个游戏:逢7过
- 游戏规则:
- 从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说:过
- 使用程序在控制台打印出 1~100 之间的满足逢七过规则的数据
-
实现:
package com.app.demo9_advanced_loop_practice; /** 高级循环的综合练习 逢七过: 1~100之间,满足逢七过规则的数字都为 “过” 逢七过规则:数字的个位或者十位包含7,或者数字是7的倍数,都为 “过” 例如:1 2 3 4 5 6 过 8 9 10 11 12 13 过 15... */ public class AdvancedLoopDemo3 { public static void main(String[] args) { // 1、for循环:得到1~100之间的每一个数字 for (int i = 1; i <= 100; i++) { // 2、判断每一个数字,如果符合逢七过规则,就打印:过;否则就打印数字本身 /** 找数的个位——>i % 10 == 7: 假如i=67, 67 / 10 = 6.7, 取余数: 7, 因此余数7 == 7,该数符合逢七过规则的包含7,就打印 "过" 找数的十位——>i / 10 % 10 == 7: 假如i=79, 79 / 10 = 7, 7 % 10 = 0.7, 取余数: 7, 因此余数7 == 7,该数符合逢七过规则的包含7,就打印 "过" 找整除7的数——>i % 7 == 0: 假如i=21, 21 / 7 = 3, 取余数: 0, 因此余数0 == 0,该数符合逢七过规则的7的倍数,就打印 "过" */ if (i % 10 == 7 || i / 10 % 10 == 7 || i % 7 == 0) { System.out.print("过 "); // 该数符合逢七过规则,因此跳出当前循环的本次循环,进入下一次循环 continue; } // 3、程序走到这里,说明该数字不符合逢七过规则,因此打印数字本身 System.out.print(i + " "); } } }
1 2 3 4 5 6 过 8 9 10 11 12 13 过 15 16 过 18 19 20 过 22 23 24 25 26 过 过 29 30 31 32 33 34 过 36 过 38 39 40 41 过 43 44 45 46 过 48 过 50 51 52 53 54 55 过 过 58 59 60 61 62 过 64 65 66 过 68 69 过 过 过 过 过 过 过 过 过 过 80 81 82 83 过 85 86 过 88 89 90 过 92 93 94 95 96 过 过 99 100 Process finished with exit code 0
四、求平方根
-
需求:
- 键盘录入一个大于等于2的整数 x,计算并返回 x 的平方根。
- 结果只保留整数部分,小数部分将被舍去。
-
分析:
-
平方根:
比如:4的平方根就是2,16的平方根就是4 ... 那么,10的平方根是多少呢? 1 * 1 = 1 < 10, 因此1不是10的平方根 2 * 2 = 4 < 10, 因此2不是10的平方根 3 * 3 = 9 < 10, 因此3不是10的平方根 4 * 4 = 16 > 10 推断:10的平方根是在3~4之间,那么结果只保留整数部分的话,10的平方根就是3
-
-
实现:
package com.app.demo9_advanced_loop_practice; import java.util.Scanner; /** 高级循环的练习 求平方根: 键盘录入一个大于等于2的整数x,计算并返回 x 的平方根 结果只保留整数部分,小数部分舍去 */ public class AdvancedLoopDemo4 { // 1、创建一个静态的键盘录入对象,用于录入数据 public static Scanner sc = new Scanner(System.in); public static void main(String[] args) { // 1、调用计算x的平方根的方法,并直接输出x的平方根 System.out.println(squareRoot(sc)); } /** * 3、定义求x的平方根的实现方法 * @return 返回x的平方根 */ private static String squareRoot(Scanner sc) { while (true) { // a、键盘录入一个整数x System.out.println("请您输入一个大于等于2的整数:"); int x = sc.nextInt(); // b、x必须大于等于2 if (x < 2) { System.out.println("您输入的整数不能小于2~ 请重新输入!"); }else { // c、得到 1~x 的每一个数字 for (int i = 1; i <= x; i++) { // 计算x的平方根 if (i * i == x) { // 如果i * i = x,说明i就是x的平方根,直接返回 return i + "是" + x + "的平方根"; } else if (i * i > x) { // 如果i * i > x,说明x的平方根在 i-1 到 i之间,直接返回整数部分 return (i-1) + "是" + x + "平方根的整数部分"; } // 如果程序走到这里,说明程序未进入if和else if的判断:说明i * i < x,说明i不是x的平方根,则继续计算 } } } } }
请您输入一个大于等于2的整数: 0 您输入的整数不能小于2~ 请重新输入! 请您输入一个大于等于2的整数: 1 您输入的整数不能小于2~ 请重新输入! 请您输入一个大于等于2的整数: -123 您输入的整数不能小于2~ 请重新输入! 请您输入一个大于等于2的整数: 19 4是19平方根的整数部分 Process finished with exit code 0
五、求质数
-
需求:
- 键盘录入一个正整数 x,判断该整数是否为一个质数。
-
分析:
-
质数:
如果一个整数只能被1和自己本身整除的,那这个数就是质数,否则这个数叫做合数 比如: 7 = 1 * 7, 只能被1和7本身整除的,7就是质数 8 = 1 * 8 2 * 4, 可以被1和8本身整除,但是还可以被2和4整除,8就是合数
-
-
实现:
package com.app.demo9_advanced_loop_practice; import java.util.Scanner; /** * 高级循环的练习 * 求质数: * 键盘录入一个正整数x,判断该数是否为一个质数 */ public class AdvancedLoopDemo5 { public static void main(String[] args) { // 1、调用求质数的方法,并直接输出返回结果 System.out.println(isPrimeNumber()); } /** * 2、定义求质数的实现方法 * @return 返回该数是质数还是合数 */ private static String isPrimeNumber() { while (true) { // a、键盘录入一个正整数x Scanner sc = new Scanner(System.in); System.out.println("请您输入一个正整数:"); int x = sc.nextInt(); // b、定义一个标记变量,表示一开始就认为这个数是质数 boolean flag = true; // c、判断该数是否为正整数 if (x > 0) { // d、输入的是正整数,再判断输入的数是否为1 if (x == 1) { System.out.println("1既不是质数,也不是合数~"); }else { // e、得到 2~x 之内的每一个数字 for (int i = 2; i < x; i++) { /** 比如 x = 7 i=2, 2<7, 进入第一次循环: if: x%i ==> 7%2 ==> / 2 = 1, 余1 */ // f、除去1和x自己本身,如果x还能被i(2 到 x-1 的所有数)整除的话,说明不是一个质数 if (x % i == 0) { // g、修改标记变量的值为false,表示该数不是质数,是合数 flag = false; break; } } /** h、循环结束,说明x除了1和x自己本身,已经没有其他数可以整除x了。 此时flag的值还没有被修改成false,说明是一个质数。 */ if (flag) { return x + "是一个质数~"; }else { // i、假如flag的值被修改成false了,说明x不是一个质数,是合数 return x + "是一个合数~"; } } }else { // 不是 System.out.println("sorry!只能输入正整数~"); } } } }
请您输入一个正整数: 0 sorry!只能输入正整数~ 请您输入一个正整数: -213 sorry!只能输入正整数~ 请您输入一个正整数: 1 1既不是质数,也不是合数~ 请您输入一个正整数: 9 9是一个合数~ Process finished with exit code 0
请您输入一个正整数: 7 7是一个质数~ Process finished with exit code 0
求质数代码优化思路
- 了解。
假如要,求100000是不是一个质数:
那么从 2 到 10万,循环次数将近10万次。
推荐一个简化的思路
81:
1 * 81, 3 * 27, 9 * 9
以81的平方根9,为中心
假设 a * b = 81
那么 a和b 中,其中有一个必定是小于等于9的,另一个必定是大于等于9的。
假设,都是大于9 ---> 9.1 * 9.1 > 81
假设,都是小于9 ---> 8.9 * 8.9 < 81
推断:其中一个数字一定是小于等于平方根,另外一个数字一定是大于等于平方根
int number = 100000;
// 如果这个范围之内,所有的数字都不能被number整除,那么number就是一个质数
for(int i = 2; i <= number的平方根; i++) {
}
六、猜数字小游戏
-
需求:
- 程序自动生成一个 1~100 之间的随机数字,使用程序实现猜出这个数字是多少?
-
思路:
package com.app.demo9_advanced_loop_practice; import java.util.Random; /** 高级循环的练习 生成随机数 */ public class AdvancedLoopDemo6 { public static void main(String[] args) { // 创建随机数对象 Random rd = new Random(); // 需求:随机数范围 1~100 /** 秘诀: 用来生成任意数到任意数之间的随机数:7~15 1、让这个范围都减去一个值,让这个范围从0开始:-7 0~8 2、尾巴+1 8+1=9 3、最终的结果,再加上第一步减去的值 */ for (int i = 0; i < 20; i++) { int number = rd.nextInt(9) + 7; // 0 ~ 8 + 7 // 7 ~ 15 System.out.print(number + " "); } System.out.println(); // 循环生成随机数并输出 for (int i = 0; i < 150; i++) { // 生成随机数 int number2 = rd.nextInt(100) + 1; // 0 ~ 99 + 1 // 1 ~ 100 // 输出随机数用空格隔开 System.out.print(number2 + " "); } } }
11 11 7 8 7 13 9 14 12 13 12 8 14 8 9 14 15 10 14 11 27 13 57 27 84 42 69 85 31 57 15 94 11 3 20 58 11 26 55 95 77 26 63 33 42 57 80 84 66 64 27 11 17 72 66 15 89 94 81 69 28 39 54 57 95 44 26 24 13 10 88 5 61 53 10 96 47 19 8 87 61 20 81 47 71 37 40 83 86 54 11 84 82 78 55 69 19 91 89 30 36 98 69 21 43 40 85 100 21 2 65 22 95 35 9 76 8 53 81 36 54 4 72 50 63 47 96 52 60 79 79 60 68 70 67 60 15 37 48 81 98 43 71 65 72 34 59 28 96 23 40 58 38 22 3 16 64 20 36 60 69 78 49 94 81 71 65 41 80 10 Process finished with exit code 0
-
实现:
package com.app.demo9_advanced_loop_practice; import java.util.Random; import java.util.Scanner; /** 高级循环的练习 猜数字小游戏: 生成一个1~100之间的随机数字 猜这个数字是多少? */ public class AdvancedLoopTest7 { public static void main(String[] args) { // 1、创建随机数对象 Random rd = new Random(); // 2、生成一个1~100之间的随机数 int number = rd.nextInt(100) + 1; // System.out.println("答案是:" + number); // 3、猜这个数字是多少 // 创建键盘录入对象,用于输入要猜的数字 Scanner sc = new Scanner(System.in); while (true) { // 开始猜数字 System.out.println("请猜猜这个数是:"); int inputNumber = sc.nextInt(); // if判断:如果猜的数 比 答案数 大了,提示 "猜大了!" if (inputNumber > number) { System.out.println("猜大了!"); }else if (inputNumber < number){ // 如果猜的数 比 答案数 小了 System.out.println("猜小了!"); }else { // 如果以上两种情况都不符合,则说明猜中了 System.out.println("恭喜您!猜中了~"); break; // 猜中了,跳出循环 } } } }
请猜猜这个数是: 60 猜小了! 请猜猜这个数是: 89 猜大了! 请猜猜这个数是: 80 猜大了! 请猜猜这个数是: 70 猜大了! 请猜猜这个数是: 65 猜大了! 请猜猜这个数是: 64 恭喜您!猜中了~ Process finished with exit code 0
最后
以上就是激昂白云为你收集整理的007-JavaSE基础巩固练习:高级循环综合练习的全部内容,希望文章能够帮你解决007-JavaSE基础巩固练习:高级循环综合练习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复