首页 > 其他分享 >循环高级综合练习

循环高级综合练习

时间:2024-03-03 12:44:57浏览次数:24  
标签:number int 练习 System 高级 循环 println public out

循环高级综合练习


无限循环和跳转控制语句

无限循环

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

格式:

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;
            }
        }
    }
}

总结:

  1. continue:跳过本次循环,继续执行下次循环。
  2. 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,这个类就可以生成一个随机数。

  • 使用步骤:

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

      import java.util.Random;
      //导包的动作必须出现在类定义的上边。
      
    2. 创建对象 --- 表示我要开始用Random这个类了

      Random r = new Random ();
      //上面这个格式里面,只有r是变量名,可以变,其他的都不允许变。
      
    3. 生成随机数 --- 真正开始干活

      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;
            }
        }
    }
}

标签:number,int,练习,System,高级,循环,println,public,out
From: https://www.cnblogs.com/Y423x/p/18049833

相关文章

  • C#高级
    //字典类List<Dictionary<string,string>>dics=newList<Dictionary<string,string>>();Dictionary<string,string>pairs=newDictionary<string,string>();pairs.Add("name1",&......
  • 牛客练习赛122
    目录写在前面ABCDE写在最后写在前面比赛地址:https://ac.nowcoder.com/acm/contest/75768。因为suzt大神在打所以也来凑一凑热闹。A签到。///*By:Luckyblock*/#include<bits/stdc++.h>#defineLLlonglong//=====================================================......
  • C++第二课 while循环
    循环while(条件){   循环体}#include<bits/stdc++.h>usingnamespacestd;intmain(){   inti,s;   i=1;   s=0;   while(i<=100)   {      s=s+i;      i=i+1;   }   cout<<s<<endl;   return0;}计算1......
  • 牛客练习赛122题解A-D
    牛客练习赛122A.黑白配代码:#include<bits/stdc++.h>usingnamespacestd;constintMAXN=1e5+7;constintINF=0x3f3f3f3f;typedeflonglongll;#defineendl"\n"voidsolve(){ intt,n;cin>>t>>n;inta[n+1];while(t--)......
  • 牛客练习赛122 F 括号匹配 费用流
    CF打多了很多题目中的性质都挖掘出来了,也想到了费用流。很难\(dp\)因为一组中三个括号留下来一个很难作为状态进行dp。由于对括号匹配还不熟悉以为是\(n^2\)的图就没写了,事实上应该是线性的建图。所以对于\(n=2000\)这个数据范围网络流是可以过的。设置源点\(S\)和汇点\(T\)。......
  • 高级消息队列协议AMQP
    一、什么AMQPAMQP(AdvancedMessageQueuingProtocol高级消息队列协议)是一种链接协议,最早用于解决金融领域不同平台之间消息传递而在2003年被提出的,用于进程之间传递异步消息。它描述了通过网络传输的字节流的数据格式。AMQ协议模型包含如下几个概念:Producer(生产者......
  • 高级搜索算法学习笔记
    0.前言如有错误,欢迎各位大佬指出。前置芝士:深度优先搜索广度优先搜索1.何为高级搜索?在通常情况下,普通的深搜往往会超时,即使剪枝也无动于衷。对于广搜,我们一旦超时也很难进行优化。而这时,我们就需要对搜索的形态进行改变,将深搜和广搜进行升级,变形成为各种效率更高的高......
  • Vue3中v-for循环动态设置img的src属性无法找到图片问题
    useImage.js//获取assets静态图片exportconstgetAssetsImge=name=>{returnnewURL(`../assets/images/app_img/${name}`,import.meta.url).href;};使用tabs=[ { link:undefined, pathName:'MicroCoop',//直接使用图片名称作为getAssetsImge的......
  • Pytorch中张量的高级选择操作
    在某些情况下,我们需要用Pytorch做一些高级的索引/选择,所以在这篇文章中,我们将介绍这类任务的三种最常见的方法:torch.index_select,torch.gatherandtorch.take我们首先从一个2D示例开始,并将选择结果可视化,然后延申到3D和更复杂场景。最后以表格的形式总结了这些函数及其区别。......
  • Java流程控制08:For循环详解
     For循环:条件.for1.虽然所有循环结构都可以用while或者do...while表示,但Java提供了另一种语句----->for循环,使一些循环结构变得更加简单。2.for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环机构。 3.for循环执行的次数是在执行前就确定的......