[从0开始学Java|第五天]Java循环高级综合练习

无限循环和跳转控制语句

无限循环

什么是无限循环?

**无限循环:**循环一直停不下来

无限循环的格式

for (;;) {

System.out.println("学习");

}

java 复制代码
public class InfiniteloopDemo1 {
    public static void main(String[] args) {
        //for格式的无限循环
        for(;;){
            System.out.println("学习");
        }
    }
}

while (true) {

System.out.println("学习");

}

java 复制代码
public class InfiniteloopDemo1 {
    public static void main(String[] args) {
        //while格式的无限循环
        while (true){
            System.out.println("学习");
        }
    }
}

do {

System.out.println("学习");

} while (true);


注意事项:

无限循环的下面不能再写其他代码了,因为循环永远停不下来,那么下面的代码永远执行不到

跳转控制语句

什么是跳转控制语句?

在循环的过程中,跳到其他语句上执行.

练习1:小老虎吃包子(continue)

**需求:**小老虎吃包子,吃到第3个包子就跳过,继续吃后面的包子.

(源代码)

java 复制代码
package skiploop;

public class SkipLoppDemo2 {
    public static void main(String[] args) {
        // 需求:小老虎在吃包子,吃了第3个包子,就跳过,继续吃后面的包子

        //1.跳过某一次循环
        for (int i = 1; i <= 5; i++) {
            if (i == 3) {
                //结束本次循环,继续下次循环
                continue;
            }
            System.out.println("小老虎在吃第" + i + "个包子");
        }
    }
}

(运行结果截图)

练习2:小老虎吃包子(break)

**需求:**小老虎吃包子,吃到第3个包子就吃饱了,后面的包子就不吃了.

(源代码)

java 复制代码
package skiploop;

public class SkipLoppDemo1 {
    public static void main(String[] args) {
        // 需求:小老虎在吃包子,吃了第3个包子就跳过,继续吃后面的包子.

        //2.结束整个循环
        for (int i = 1; i <= 5; i++) {
            System.out.println("小老虎在吃第" + i + "个包子");
            if (i == 3) {
                //结束整个循环
                break;
            }
        }

    }

(运行结果截图)

总结

1.continue:跳过本次循环,继续执行下次循环.

2.break:结束整个循环

练习

案例1:逢七过

朋友聚会的时候可能会玩一个游戏:逢7过

**游戏规则:**从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说:过

**需求:**使用程序在控制台打印出1-100之间的满足逢七必过规则的数据

(源代码)

java 复制代码
package test;

public class Test1 {
    public static void main(String[] args) {
        //1.得到1~100之间的一个数字
        for(int i = 1 ; i <= 100 ; i++){
            //判断每一个数字,如果符合规则,就打印过,如果不符合规则,就打印真实的数字
            if (i % 10 == 7 || i / 10 % 10 == 7 || i % 7 == 0){
                System.out.println("过");
                continue;
            }
            System.out.println(i);
        }
    }
}

(运行结果截图)

案例2:平方根

**需求:**键盘录入一个大于等于2的整数x,计算并返回x的平方根.结果只保留整数部分,小数部分将被舍去.

**分析:**在代码中,从1开始循环,拿着数字的平方根跟原来的数字进行比较;如果小于,那么继续往后判断;如果相等,那么当前数字就是平方根;如果大于,那么前一个数字就是平方根的整数部分

(源代码)

java 复制代码
package test;

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        /*需求:键盘录入一个大于等于2的整数x,计算并返回x的平方根.
        结果只保留整数部分,小数部分将被舍去.*/

        //1.键盘录入一个大于等于2的整数x
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个大于等于2的整数:");
        int number = sc.nextInt();
        //2.从1开始循环判断
        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,判断该整数是否为一个质数.

(源代码)

java 复制代码
package test;

import java.util.Scanner;

public class Test3 {
    public static void main(String[] args) {
        //需求:键盘录入一个正整数x,判断该整数是否为一个质数.
        //质数:只能被1和它本身整除的数

        //分析:
        //1.键盘录入一个正整数x
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个正整数x:");
        int number = sc.nextInt();

        //2.定义一个变量,用来标记number是否为一个质数
        //true:是一个质数
        //false:不是一个质数
        boolean flag = true;

        //3.判断该整数是否为一个质数
        //写一个循环,从2开始判断,一直判断到number-1为止
        //这个范围内,有没有数字可以被number整除
        for (int i = 2; i < number; i++) {
            //i依次表示这个范围内的每一个数字
            if (number % i == 0) {
                flag = false;
                break;
            }
        }
        /*只有当这个循环结束了,表示这个范围内的每一个数字都判断完毕了,
        此时才能断定number是一个质数*/
        if (flag) {
            System.out.println(number + "是一个质数");
        } else {
            System.out.println(number + "不是一个质数");
        }
    }
}

(运行结果截图)

[优化算法]

java 复制代码
package test;

public class Test4 {
    public static void main(String[] args) {
        //100000
        
        /*以81的平方根9为中心,而且假设 a * b = 81
        那么a和b中,其中有一个必定是小于等于9的,另一个是大于9的*/
        
        int number = 100;
        //如果在这个范围之内,所有的数字都不能被number整除,那么number一定是个质数
        for (int i = 2; i <= number的平方根; i++) {
        }
    }
}

案例4:猜数字小游戏

**需求:**程序自动生成一个1-100之间的随机数字,使用程序实现猜出这个数字是多少?

使用步骤

1.导包 --- Random这个类在哪

import java.util.Random;

导包的动作必须出现在类定义的上边.

2.创建对象 --- 表示我要开始用Random这个类了

Random r = new Random ();

上面这个格式里面,只有r是变量名,可以变,其他的都不允许变.

3.生成随机数 --- 真正开始干活了

int number = r.nextInt(随机数的范围);

上面这个格式里面,只有number是变量名,可以变,其他的都不允许变.

练习1:获取一个随机数

**需求:**生成10次随机数,范围为0 ~ 10

(源代码)

java 复制代码
package test;

//1.导包
import java.util.Random;

public class Test5 {
    public static void main(String[] args) {
        //先获取一个随机数,范围为0~10

        //2.创建对象
        Random r = new Random();

        //3.获取随机数
        //口诀:包头不包尾,包左不包右
        for (int i = 0; i < 10; i++) {
            int number = r.nextInt(11);//0~10
            System.out.println(number);
        }
    }
}

(运行结果截图)

练习2:获取一个随机数

**需求:**生成一个随机数,随机数范围:1 ~ 100

(源代码)

java 复制代码
package test;

import java.util.Random;

public class Test6 {
    public static void main(String[] args) {
        //需求:随机数范围:1 ~ 100

        /*秘诀:
        用来生成任意数到任意数之间的随机数  如7~15
        1.让这个范围头尾都减去一个值,让这个范围从0开始  -7  0~8
        2.尾巴+1  8 + 1 = 9
        3.最终的结果,再加上第一步减去的值
        Random r = new Random();
        int num = r.nextInt(9) + 7;//7~15
        System.out.println(num);*/

        Random random = new Random();
        int number = random.nextInt(100) + 1;//1~100
        System.out.println(number);
    }
}

(运行结果截图)

[代码实现]

(源代码)

java 复制代码
package test;

import java.util.Random;
import java.util.Scanner;

public class Test7 {
    public static void main(String[] args) {
        //需求:程序自动生成一个1-100之间的随机数字,使用程序实现猜出这个数字是多少?

        //分析:
        //1.生成一个1-100之间的随机数字
        Random r = new Random();
        int number = r.nextInt(100) + 1;

        //2.猜这个数字是多少
        Scanner sc = new Scanner(System.in);
        //3.判断两个数字并给出不同的提示
        while (true) {
            System.out.println("请输入你要猜的数字(1-100):");
            int guessNumber = sc.nextInt();
            if (guessNumber > number) {
                System.out.println("你猜的数字" + guessNumber + "大了");
            } else if (guessNumber < number) {
                System.out.println("你猜的数字" + guessNumber + "小了");
            } else {
                System.out.println("恭喜你,猜中了");
                break;
            }
        }
    }
}

(运行结果截图)

注意事项:

生成随机数的代码 int number = r.nextInt(100) + 1; 不能写在循环的里面的,否则每一次都会产生一个新的随机数.

相关推荐
清铎3 小时前
项目_Agent实战
开发语言·人工智能·深度学习·算法·机器学习
BoJerry7773 小时前
数据结构——单链表(不带头)【C】
c语言·开发语言·数据结构
J_liaty3 小时前
SpringBoot 自定义注解实现接口加解密:一套完整的多算法方案
java·spring boot·算法
m0_748708053 小时前
C++代码移植性设计
开发语言·c++·算法
Dr.Kun3 小时前
【鲲码园PsychoPy】Go/No-go范式
开发语言·后端·golang
郝学胜-神的一滴3 小时前
Linux Socket模型创建流程详解
linux·服务器·开发语言·网络·c++·程序人生
zhengfei6113 小时前
踪有趣的 Linux(和 UNIX)恶意软件。提交 PR
java·数据库·mysql
「QT(C++)开发工程师」3 小时前
C++ 观察者模式
java·c++·观察者模式
可问春风_ren3 小时前
Vue3 入门详解:从基础到实战
开发语言·前端·javascript·vue.js·前端框架·ecmascript·edge浏览器