循环高级综合练习
循环高级综合练习
无限循环和跳转控制语句
无限循环
- 无限循环:循环一直停不下来。
格式:
for:
for(;;){
System.out.println("给女神表白");
}
while:
while(true){
System.out.println("女神答应我了");
}
do...while:
do{
System.out.println("女神答应我了");
}while(true);
注意事项
- 无限循环的下面不能再写其它代码了,因为循环永远停不下来,那么下面的代码永远执行不到。
跳转控制语句
- 跳转控制语句:在循环的过程中,跳到其他语句上执行。
练习
案例1:小老虎吃包子
小老虎吃包子,第三个包子有虫子,跳过。
public class SkipLoopDemo1 {
public static void main(String[] args) {
//1.跳过某一次循环
for (int i = 1; i <= 5; i++) {
if(i == 3){
//结束本次循环,继续下次循环。
continue;
}
System.out.println("小老虎在吃第" + i + "个包子");
}
}
}
案例2:小老虎吃包子
小老虎吃包子,吃完第三个就饱了。
public class SkipLoopDemo2 {
public static void main(String[] args) {
//2.结束整个循环
for (int i = 1; i <= 5; i++) {
System.out.println("小老虎在吃第" + i + "个包子");
if(i == 3){
//结束整个循环
break;
}
}
}
}
总结:
- continue:跳过本次循环,继续执行下次循环。
- break:结束整个循环。
练习(4.随机数)
案例1:逢7过
朋友聚会的时候可能会玩一个游戏: 逢7过
游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说:过
需求:使用程序在控制台打印出1-100之间的满足逢七必过规则的数据
public class LoopTest1 {
public static void main(String[] args) {
/*朋友聚会的时候可能会玩一个游戏: 逢7过
游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说:过
需求:使用程序在控制台打印出1-100之间的满足逢七必过规则的数据
*/
//分析:
//个位7 十位7 7倍数
//1.得到1~100之间的每一个数字
//开始:1
//结束:100
for (int i = 1; i <= 100; i++) {
//2.判断每一个数字,如果符合规则,就打印过,如果不符合规则就打印真实的数字
if(i % 10 == 7 || i / 10 % 10 == 7 || i / 7 == 0){
System.out.println("过");
continue;
}
System.out.println(i);
}
}
}
案例2:求平方根
需求:键盘录入一个大于等于2的整数x,计算并返回x的平方根。
结果只保留整数部分,小数部分将被舍去。
import java.util.Scanner;
public class LoopTest2 {
public static void main(String[] args) {
/*需求:键盘录入一个大于等于2的整数x,计算并返回x的平方根。
结果只保留整数部分,小数部分将被舍去。
*/
//分析:
//1.键盘录入一个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int number = sc.nextInt();
//2.从1开始循环判断
//开始:1 结束:number
for (int i = 1; i <= number; i++) {
//用i * i 再跟number进行比较
if(i * i == number){
System.out.println(i + "就是" + number + "的平方根");
//一旦找到了,循环就可以停止了,后面的数字就不需要再找了,提高代码的运行效率。
break;
}else if(i * i > number){
System.out.println((i - 1) + "就是" + number + "平方根的整数部分");
break;
}
}
}
}
案例3:求质数
需求:键盘录入一个正整数x,判断该整数是否为一个质数。
基础思路:
import java.util.Scanner;
public class LoopTest3 {
public static void main(String[] args) {
//需求:键盘录入一个正整数x,判断该整数是否为一个质数。
//1.键盘录入一个正整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个正整数");
int number = sc.nextInt();
//定义一个变量,表示标记
//标记着number是一个质数
//true:是一个质数
//false:不是一个质数
boolean flag = true;
//2.判断
//写一个循环,从2开始判断,一直判断到number-1为止
//看这个范围之内,有没有数字可以被number整除
for (int i = 2; i < number; i++) {
//i 依次表示这个范围之内的每一个数字
//看number是否能被i整除
if(number % i == 0){
flag = false;
break;
}
}
//只有当循环结束了,表示这个范围之内所有的数字都判断完毕了
//此时才能断定number是一个质数
if(flag){
System.out.println(number + "是一个质数");
}else{
System.out.println(number + "不是一个质数");
}
}
}
简化思路(用于提高程序的运行效率):
import java.util.Scanner;
public class LoopTest4 {
public static void main(String[] args) {
//思路:
//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
//其中一个数字一定是小于等于平方根
//另一个数字一定大于等于平方根
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int number = sc.nextInt();
boolean flag = true;
for (int i = 1; i <= number; i++) {
if(i * i >= number){
for(int a = 2; a <= i;a++){
if(number % a == 0){
flag = false;
break;
}
}
if(flag){
System.out.println(number + "是一个质数");
}else{
System.out.println(number + "不是一个质数");
}
break;
}
}
}
}
案例4:猜数字小游戏
-
获取随机数:Java帮我们写好一个类叫Random,这个类就可以生成一个随机数。
-
使用步骤:
-
导包 --- Random这个类在哪
import java.util.Random; //导包的动作必须出现在类定义的上边。
-
创建对象 --- 表示我要开始用Random这个类了
Random r = new Random (); //上面这个格式里面,只有r是变量名,可以变,其他的都不允许变。
-
生成随机数 --- 真正开始干活
int number = r.nextInt(随机数范围); //上面这个格式里面,只有number是变量名,可以变,其他的都不允许变。
范例1:
import java.util.Random; public class LoopTest5 { public static void main(String[] args) { //先获取一个随机数。 //范围:0~100 //1.导包 //2.创建对象 Random r = new Random(); //3.生成随机数 //判断技巧: //在小括号中,书写的是生成随机数的范围 //这个范围一定是从0开始的 //到这个数-1结束 //口诀:包头不包尾,包左不包右 int number = r.nextInt(100);//0 ~99 System.out.println(number); } }
范例2:
import java.util.Random; public class LoopTest6 { public static void main(String[] args) { //需求: //随机数范围:1-100 //方法1. Random r = new Random(); int number1 = r.nextInt(1,101);//1~100 System.out.println(number1); //方法2: //1.让这个范围头尾都减去一个值,让这个范围从0开始 //2.尾巴+1 //3.最终的结果,再加上第一步减去的值 int number2 = r.nextInt(100) + 1; System.out.println(number2); } }
-
需求:程序自动生成一个1-100之间的随机数字,使用程序实现猜出这个数字是多少?
import java.util.Random;
import java.util.Scanner;
public class LoopTest7 {
public static void main(String[] args) {
//需求:程序自动生成一个1-100之间的随机数字,使用程序实现猜出这个数字是多少?
//扩展需求:加一个保底机制,10次猜不中,直接显示失败
//注意事项:
//1.生成随机数的代码int number = r.nextInt(1,101);
//不能写在循环的里面,否则每一次都会产生一个新的随机数
//2.抽奖机制
//保底 xx次
//计数器
//用来统计当前已经猜了多少次
int count = 0;
//分析:
//1.生成一个1-100之间的随机数字
Random r = new Random();
int number = r.nextInt(1,101);
//2.猜这个数字是多少
Scanner sc = new Scanner(System.in);
while (true){
System.out.println("请输入你要猜的数字");
int guessNumber = sc.nextInt();
//3.判断两个数字给出不同的提示
//猜的数字大了,提示 大了
//猜的数字笑了,提示 小了
//猜的数字一样,提示 猜中了
count++;
if(count == 10){
System.out.println("游戏失败");
break;
}
if(guessNumber > number){
System.out.println("大了");
}else if(guessNumber < number){
System.out.println("小了");
}else{
System.out.println("猜中了");
break;
}
}
}
}