侧边栏壁纸
博主头像
青菜-halo2 博主等级

行动起来,活在当下

  • 累计撰写 74 篇文章
  • 累计创建 6 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

04-循环高级

Administrator
2025-06-16 / 0 评论 / 0 点赞 / 33 阅读 / 0 字

一、无限循环

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

//for无限循环
for (;;){
    System.out.println("学习");
}
​
//while无限循环 (常用)
while(true){
    System.out.println("学习");
}
​
//do..while无限循环
do {
    System.out.println("学习");
} while(true);

练习

package com.yq.infiniteloop;
​
public class InfiniteloopDemo1 {
    public static void main(String[] args){
        //for格式的无限循环
        /*
        for(;;){
            System.out.println("学习");
        }
        */
​
        //while格式的无限循环
        while(true){
            System.out.println("学习");
        }
​
        //注意:无限循环的下面不能再写其他代码,因为循环不会停下来,下面的代码不会执行
    }
}

二、跳转控制语句

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

2.1 continue

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

package com.yq.skiploop;
​
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.2 break

结束整个循环

package com.yq.skiploop;
​
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;
            }
        }
    }
}

三、练习

3.1 逢7过

package com.yq.test;
​
public class LoopTest1 {
    public static void main(String[] args) {
        /*朋友聚会的时候可能会玩一个游戏:逢7过
        游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说过:过
        需求:使用程序在控制台打印出1-100之间的满足逢七必过规则的数据*/
​
        for (int i = 1; i <= 100; i++){
            if (i % 7 == 0 || i % 10 == 7 || i / 10 % 10 == 7){
                System.out.println("过");
                continue;
            }
            System.out.println(i);
        }
    }
}

3.2 求平方根

package com.yq.test;
​
import java.util.Scanner;
​
public class LoopTest2 {
    public static void main(String[] args) {
        /* 需求:键盘录入一个大于等于2的整数 x,计算并返回x的平方根
                 结果只保留整数部分,小数部分将被舍去
        */ 
​
        //原理:从1到x,一个一个求平方与x比较,得到整数部分
​
        //键盘录入x
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入大于等于2的整数: ");
        int x = sc.nextInt();
​
        // 循环实现
        for (int i = 1; i <= x; i++){
            if (i * i == x){
                System.out.println(i + "就是" + x + "的平方根");
                break; //一旦找到就结束,后面的数字不需要再找了
            } else if (i * i > x){
                System.out.println((i -1 )+ "就是" + x + "的平方根的整数部分");
                break; //一旦找到就结束,后面的数字不需要再找了
            }
        }
    }
}

3.3 求质数

package com.yq.test;
​
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是否为一个质数
        boolean flag = true;
​
        //判断
        //for循环,从2开始判断,一直判断到number-1为止
        int count = 0; //定义count计算循环次数
        for (int i = 2; i < number; i++){
            count = count + 1;
            //i表示这个范围内的每一个数字
            //判断number是否被i整除
            if (number % i == 0){
                flag = false;
​
                // System.out.println(number + "不是一个质数");
                break;
            }
​
        }
        if (flag){
            System.out.println(number + "是一个质数");
        } else {
            System.out.println(number + "不是一个质数");
        }
        System.out.println("循环计算次数为:" + count + "得到结果");
    }
}
​

3.3.1 求质数-优化判断次数

因为目前还未学习直接计算一个数的算术平方根,只是利用循环强制计算算数平方根

package com.yq.test;
​
import java.util.Scanner;
​
public class LoopTest4 {
    public static void main(String[] args) {
        //判断一个数是否为质数,当这个数字很大的时候,按照之前的写法,会循环很多次
        //推荐一个简化的思路
        /*
        81
        1 * 81
        3 * 27
        9 * 9
        
        以81的算数平方根,为中心,并且假设 a * b = 81
        那么 a * b 中,其中有一个必定是小于等于9的,另一个是大于等于9的
        */
​
        //键盘录入数字
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入正整数: ");
        int number = sc.nextInt();
​
        //优化算法
        //先计算number的算数平方根,先用强制循环计算,后续会有更好的方法
        int x = 1;
        for (; x <= number; x++){
            if (x * x == number){
                break;
            } else if (x * x > number) {
                x = x - 1;
                break;
            }
        }
        // System.out.println(x);
​
        boolean flag = true;
        int count = 0; // 定义count计算循环次数
        for (int i = 2; i <= x; i++){
            if (number % i == 0){
                flag = false;
                break;
            }
            count++;
        }
        if (flag){
            System.out.println(number + "是一个质数");
        } else {
            System.out.println(number + "不是一个质数");
        }
        System.out.println("循环计算次数为:" + count + "得到结果");
    }
}
​

3.4 随机数

3.4.1 生成随机数

package com.yq.test;

//获取随机数的类:Random
import java.util.Random;
/*
  生成随机数的步骤:
    1、导包
        import java.util.Random;
    2、创建对象
        Random r = new Random();
    3、生成随机数
        int number = r.nextInt(随机数范围);
        int number = r.nextInt(bound:100); //获取0~99之间的一个随机数
        int number = r.nextInt(bound:10); //获取0~9之间的一个随机数
        // 判断技巧:包头不包尾,包左不包右
 */


public class LoopTest5 {
    public static void main(String[] args) {
        Random r = new Random(); //创建对象
        for (int i = 0; i < 100; i++){
            int number = r.nextInt(10);
            System.out.println(number);
        }
    }
}

3.4.2 生成随机数 1~100

package com.yq.test;

import java.util.Random; //导包

public class LoopTest6 {
    public static void main(String[] args){
        Random r = new Random(); //创建对象

        // 生成1~100的一个随机数
        /*
           技巧:生成任意随机数范围             (7~15)
           1、范围头尾都减一个值,让范围从0开始    (头尾都减去7)
               7~15 =》 0~8
           2、尾巴加1                         (8+1)
               0~9 =》 r.nextInt(9);
           3、最终结果加上第一步减去的值          (+7)
                r.nextInt(9) + 7;
         */

        // 1~100 =》 0~99 =》 100 =》 +1
        int number = r.nextInt(100) + 1;
        System.out.println(number);
    }
}

3.4.3 猜随机数小游戏

package com.yq.test;

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

public class LoopTest7 {
    public static void main(String[] args){
        //需求:程序自动生成一个1-100之间的随机数字,使用程序实现猜出这个数字是多少?
        //1、生成一个1~100之间的随机数
        Random r = new Random();
        int number = r.nextInt(100) + 1;
        // 注意:生成随机数的代码不能卸载while循环里面,否则每次循环随机数都会变化

        int count = 0; // 定义count变量,记录循环次数
        while (true) {
        //2、键盘录入,猜数字
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入猜的数字");
            int guestNumber = sc.nextInt();

        //3、判断
            if (guestNumber > number) {
                System.out.println("大了");
            } else if (guestNumber < number) {
                System.out.println("小了");
            } else {
                System.out.println("猜对了!!");
                break;  //只有猜中了才会退出程序
            }

        //4、三次保底,若超过三次都没有猜中,则提示答案
            count++;
            if (count > 3 && guestNumber != number){
                System.out.println("猜了"+ count +"次也没猜中,告诉你答案吧!");
                System.out.println("    答案是:" + number);
            }
        }
    }
}


0

评论区