Java自学day7

本文详细讲解了Java编程中的无限循环结构(for、while、do...while),以及如何使用continue和break进行控制流程。此外,还涉及到了随机数生成、猜数字游戏和质数判断的基本算法示例。
摘要由CSDN通过智能技术生成

循环高级

无线循环

        循环一直停不下来

    for(;;){
        System.out.println("学习");
    }

    while(true){
        System.out.println("学习");
    }

    do{
        System.out.println("学习");
    }while(true);

注意事项

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

跳转控制语句 

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

练习:小老虎吃包子

小老虎吃包子,第三个包子有虫子,跳过。

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

小老虎吃包子,第三个包子吃完不吃了

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

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

 2.break:结束整个循环

练习

练习:逢7过

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

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

        //1.得到1~100之间的每一个数字
        int i = 1;
        for(;i <= 100;i++){
            //2.判断每一个数字,如果符号规则,就打印过,不符合规则打印真是数字
            if(i % 7 == 0 || i % 10 == 7 || i % 10 / 10 == 7){
                System.out.println("过");
                continue;
            }
            System.out.println(i);
        }

 练习:求平方根

需求:键盘录入一个大于等于2的整数X,计算并返回X的平方根

结果只保留整数部分,小数部分将被舍去。

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

        //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++){
            if(i * i == number){
                System.out.println(i + "就是" + number + "的平方根");
                //一旦找到,循环就可以停止了,后面的数字就不需要再找,提高代码的运行效率
                break;
            }else if(i * i > number){
                System.out.println((i - 1) + "就是" + number + "平方根的整数部分");
                break;
            }
        }

练习:求质数

需求:键盘录入一个正整数X,判断该整数是否为一个质数

package test;

import java.util.Scanner;

public class test2 {
    public static void main(String[] args) {

        //方法一:
        //质数:如果一个数只能被1和本身整除,那么这个数就是质数,否则它就是合数
        //1.键盘输入一个整数
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个正整数");
        int number = sc.nextInt();

        //定义一个变量,表示标记
        //标记这number是否为一个质数
        //true:是一个质数
        //false:不是一个质数

        //表示最初就认为number是一个质数
        boolean  flag = true;

        //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;
            }/*else{
                System.out.println(number + "是一个质数");
            }*/
        }
        //只有当这个循环结束了,表示这个范围之内的所有数字都判断完毕了
        //此时才能判断number是一个质数
        if(flag){
            System.out.println(number + "是一个质数");
        }else{
            System.out.println(number + "不是一个质数");
        }


        //方法二思路:
        //100000
        //2 ~ 99999
        //循环次数,将近十万次
        /*
        * 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++){
        *
        * }
        * */
    }
}

获取随机数

 Java帮我们写好一个类叫Random,这个类就可以生成一个随机数

使用步骤:

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

        import   java.util.Random;

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

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

Random  r  =  new  Random ();

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

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

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

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

 //2.创建对象
        Random r = new Random();
        //3.生成随机数
        //判断技巧
        //在小括号里,书写的是生成随机数的范围
        //这个范围一定是从0开始的
        //到这个数-1就结束
        //口诀:包头不包尾,包左不包右
        int number = r.nextInt(100);

        System.out.println(number);

        /*
        * 随机生成任意数到任意数之间的随机数  如 7~15
        * 1.让这个范围的头尾都减去一个值,让这个范围从0开始    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);
        * */

练习:猜数字

package test;

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

public class test4 {
    public static void main(String[] args) {
        //需求:程序自动生成一个1~100之间的随机数字,使用程序实现猜出这个数字是多少?
        //扩展小需求:如果三次猜不中,直接提示猜中了
        //注意点:
        //生成随机数的代码int number = r.next(100)+1;
        //不能写在循环的里面的,否则每一次都会产生一个新的随机数

        //分析
        //1.生成一个1~100之间的随机数字
        //计数器
        int count = 0;
        Random r = new Random();
        int number = r.nextInt(100) + 1;
        System.out.println(number);
        //2.键盘录入要猜这个数字的多少
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要猜的数字:");

        while (true) {
            int guessNumber = sc.nextInt();
            //3.判断两个数字给出不同的结果
            //猜的数字大了,提示:大了
            //猜的数字小了,提示:小了
            //猜的数字一样,提示:猜中了
            count++;
            if(count == 3){
                System.out.println("猜中了!");
                break;
            }
            if (guessNumber > number) {
                System.out.println("大了!");
            } else if (guessNumber < number) {
                System.out.println("小了!");
            } else {
                System.out.println("猜中了!");
                break;
            }
        }

    }
}

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y木子李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值