8.Java循环高级综合练习-无限循环和跳转控制语句,逢七过,平方根,判断是否为质数,猜数字小游戏

简介: 8.Java循环高级综合练习-无限循环和跳转控制语句,逢七过,平方根,判断是否为质数,猜数字小游戏

前言

一、无限循环

1.这三种循环中哪一种无限循环是最常用的呢?

当然是右上角的while循环啦~

2.注意事项:

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

二、跳转控制语句

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

break 结束整个循环

三、逢七过

public class test1 {
    /*游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说:过
    需求:
    使用应用程序在控制台打印出1-100之间满足逢七过规则的数据
    分析:
    个位7 十位7 7倍数
    1 2 3 4 5 6 过 8 9 10 11 12 13 过 15 16 过 18 19 20 过...
    69 过 过 过 过 过 ....80
     */
    public static void main(String[] args) {
        //1.得到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);
        }
    }
}

四、平方根

import java.util.Scanner;
public class test2 {
    public static void main(String[] args) {
        /*需求:键盘录入一个大于等于二的整数x,计算并返回x的平方根
        结果只保留整数部分,小数部分将舍去
        分析:
        平方根相当于数学中的开根号  16的平方根4
        10
        1*1=1<10
        2*2=4<10
        3*3=9<10
        4*4=16>10
        推断:10的平方根在3-4之间
        在代码当中
        从1开始循环,拿着数字的平方根和原来的数字进行比较
        如果小于,那么继续往后判断
        如果等于,那么当前数字就是平方根
        如果大于,那么前一个数字就是平方根的整数部分
         */
        //1.键盘录入一个整数
        Scanner sc= new Scanner(System.in);
        System.out.println("请输入一个整数:\n");
        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;
            }
        }
    }
}

五、判断该整数是否为一个质数

import java.util.Scanner;
public class test3 {
    public static void main(String[] args) {
        /*需求:键盘录入一个正整数x,判断整数是否为一个质数
        质数:
        如果一个整数只能被1和他本身整除,那么这个数就是质数,否则这个数就是合数
        7=7*1  质数
        8=8*1 2 *4 合数
         */
        //分析:
        //1.键盘录入一个正整数
        //number
        Scanner sc= new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int number =sc.nextInt();
        //3.定义一个变量表示标记
        //标记着number是否为一个质数
        //true 是一个质数
        //false 不是一个质数
        boolean flag=true;//表示在一开始number是一个质数
        //2.判断
        //写一个循环,从2开始判断,一直判断到number-1为止
        //看这个范围之内,有没有数字可以被number整除
        for(int i=2;i<number;i++){
            //i依次表示这个范围之内的每一个数字
            //看number是否被i整除就可以了
            if(number%i==0){
                flag=false;
            }
                //System.out.println(number+"不是一个质数");
                break;
        }
            //只有当这个循环结束了,表示这个范围之内所有数字都判断完了
            //此时才能判定number是一个质数
        if(flag){
            System.out.println(number+"是一个质数");
        }else{
            System.out.println(number+"不是一个质数");
        }
    }
}

优化思路:

public class test4 {
    public static void main(String[] args) {
        //100000
        //2-99999
        //循环的次数:将近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=100;
        //如果在这个范围内,所有的数字都不能被number整除
        //那么number一定是个质数
        /*for (int i = 2; i <=number的平方根 ; i++) {
        }*/
    }
}

六、猜数字小游戏

首先我们要来学习一下随机数的生成:

import java.util.Random;
public class test5 {
    public static void main(String[] args) {
        /*先获取一个随机数
        范围 0-10*/
        //2.创建对象
        Random r=new Random();
        //3.生成随机数
        //判断技巧:
        //在小括号中,书写的是生成随机数的范围
        //这个范围一定是从0开始的
        //到这个数-1结束
        //口诀:包头不包尾,包左不包右
        for (int i = 0; i < 100; i++) {
            int number=r.nextInt(10);//0-9
            System.out.println(number);
        }
    }
}

可以发现随机数生成的数值在0-9之间

import java.util.Random;
public class test6 {
    public static void main(String[] args) {
        //需求:
        //随机数范围:1-100
        /*
        //创建对象
        Random r=new Random();
        //生成随机数
        int number= r.nextInt(101);//0~100
        System.out.println(number);
         */
        //秘诀:
        //用来生成任意数到任意数之间的随机数 7~15
        //1.让这个范围头尾都减去一个值,让这个范围从0开始  -7  0~8
        //2.尾巴+1        8+1=9
        //3.最终的结果:再加上第一步减去的值
        /*
        Random r=new Random();
        int number= r.nextInt(9)+7;//7~15
                       //0~8   +7
        System.out.println(number);
         */
        //生成1-100随机数
        Random r=new Random();
        int number= r.nextInt(100)+1;   //0~99  +1  =  1~100
        System.out.println(number);
    }
}

猜数字最终代码:

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("请输入你要猜的数字:\n");
            int guessnumber=sc.nextInt();
            if (guessnumber > number) {
                System.out.println("猜大了");
            } else if (guessnumber < number) {
                System.out.println("猜小了");
            } else {
                System.out.println("猜中了");
                break;
            }
        }
    }
}

注意事项:

生成随机数的代码

int number= r.nextInt(100)+1;

不能写在循环的里面的,否则每一次都会生成一个新的随机数

保底机制

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);
        //计数器:用来统计当前猜了多少次
        int count=0;
        //3.判断两个数字给出不同的提示
        //猜的数字大了,提示大了
        //猜的数字小了,提示小了
        //猜的数字一样,提示猜中了
        while(true) {
            System.out.println("请输入你要猜的数字:\n");
            int guessnumber=sc.nextInt();
            count++;
           if(count==3){
               System.out.println("猜中了\n");
               break;
           }
            if (guessnumber > number) {
                System.out.println("猜大了");
            } else if (guessnumber < number) {
                System.out.println("猜小了");
            } else {
                System.out.println("猜中了");
                break;
            }
        }
      /*  注意事项:
        1.生成随机数的代码
        int number= r.nextInt(100)+1;
        不能写在循环的里面的,否则每一次都会生成一个新的随机数
        2.抽奖机制
        用点券去抽水晶
        保底 360次
        */
    }
}


总结

今天的内容你是否有所收获呢友友们🥰如果有写的不对的地方,欢迎大家帮我指正.最后,希望友友们点赞收藏一下博客关注后续的Java学习内容哦~😘💕💕

相关文章
|
7天前
|
Java
Java快速入门之判断与循环
本文介绍了编程中的流程控制语句,主要包括顺序结构、判断结构(if语句和switch语句)以及循环结构(for、while和do...while)。通过这些语句可以精确控制程序的执行流程。if语句有三种格式,分别用于简单条件判断、二选一判断和多条件判断。switch语句适用于有限个离散值的选择判断,而循环结构则用于重复执行某段代码,其中for循环适合已知次数的情况,while循环适合未知次数但有明确结束条件的情况,do...while则是先执行后判断。文中还提供了多个示例和练习,帮助读者理解并掌握这些重要的编程概念。
|
2月前
|
Java 程序员 API
Java循环操作哪个快?
本文探讨了Java中stream API与传统for循环在性能上的对比,通过多个示例分析了不同场景下两者的优劣。作者指出,尽管stream API使代码更简洁,但不当使用会降低可读性和性能,特别是在处理大数据量时。实验结果显示,在多数情况下,普通for循环的性能优于stream API,尤其是在单次操作耗时较短但需多次执行的场景中。文章建议开发者在设计初期就考虑全局流程,避免重复使用stream流,以提升代码质量和性能。
Java循环操作哪个快?
|
2月前
|
Java 程序员 API
Java循环操作哪个快?
本文探讨了Java中Stream API与传统for循环的性能对比及适用场景。作者通过实际案例分析,指出在某些情况下,过度使用Stream API会导致代码可读性和维护性下降。测试结果显示,在数据量较小的情况下,普通for循环的性能优于Stream API,尤其是在涉及多次类似操作时。因此,建议在开发中根据具体需求选择合适的遍历方式,以提高代码的可读性和性能。
Java循环操作哪个快?
|
3月前
|
算法 Java 测试技术
🧑‍💻Java零基础:Java 的循环退出语句 break
【10月更文挑战第16天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
80 6
|
3月前
|
Java 测试技术 数据安全/隐私保护
📖Java零基础-while循环语句的深度解析
【10月更文挑战第6天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
64 1
|
小程序 Java
JAVA猜数字小程序,利用异常处理
JAVA猜数字小程序,利用异常处理
4159 7
|
14天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
68 17
|
25天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
10天前
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题
|
27天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。