Day03

Day03

Java程序流程控制

  • 作用:控制程序的执行顺序
  • 常见的三种执行顺序
    • 顺序结构:自上而下的执行代码
    • 分支结构:根据条件,选择对应的代码
    • 循环结构:控制某段代码的重复执行

1、分支结构

1.if
  • 根据条件表达式结果的真假决定执行某段代码

  • 三种形式

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PCAwalbc-1668262734103)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112112914145.png)]

    • if(条件表达式){语句体}
      • 执行流程:判断条件表达式的结果,true则执行语句体然后跳出分支,否则直接跳出if分支
      • 大括号只有一行代码,大括号可以省略
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xKvGwNUh-1668262734104)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112153408024.png)]
    • if(条件表达式){语句体2} else{语句体2}
      • 执行流程:判断条件表达式的结果,true则执行语句体1然后跳出分支,否则执行else的语句体2然后跳出分支
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LkFXwe1J-1668262734105)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112153504384.png)]
    • if(条件表达式1){语句体2} else if(条件表达式2){语句体2} else if(条件表达式3){语句体3} …else{语句体n}
      • 执行流程:判断条件表达式1的结果,true则执行语句体1然后跳出分支;false则判断条件表达式2的结果,true则执行语句体2然后跳出分支,…没有任何条件为true,执行else分支
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pldozJGf-1668262734105)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112153530962.png)]
  • if常见的问题:

    • if(条件){},()后不能跟“;”否则{}中的代码将不受if的控制了。
    • 如果if语句的{}中只有一行代码的情况,{}可以省略不写(但是不推荐省略)。
package com.itheima.branch;

import java.util.Scanner;

public class IfDemo01 {
    public static void main(String[] args) {
        //if分支
        //1.if(表达式){语句体}
        //需求:测体温,超过或等于37.3报警
        double temp = 36.3;
        if (temp>=37.3){
            System.out.println("报警");
        }
        System.out.println("测温结束");

        System.out.println("========================");
        //2.if(表达式1){语句体1}else{语句体2}
        //需求,发红包
        double money = 100;
        if (money>=78.6){
            System.out.println("成功");
        }
        System.out.println("余额不足");
        System.out.println("========================");

        //2.if(表达式1){语句体1}else if(表达式2){语句体2}else if(表达式3){语句体3}...else {语句体n}
        //需求:绩效考核 ,成绩为整数
        int score = 81;
        if (score>=90&&score<=100){//用&&比用&好,因为左边false,右边直接不执行,节省资源
            System.out.println("A");
        }else if (score>=89&&score<=80){
            System.out.println("B");
        }else if (score>=60&&score<=79){
            System.out.println("C");
        }else if (score>=0&&score<=59){
            System.out.println("D");
        }else {
            System.out.println("输入错误");
        }
        System.out.println("========================");

        //需求,键盘录入成绩
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入成绩");
        int i = scanner.nextInt();
        if (i>=95&&i<=100){
            System.out.println("自行车");
        }else if (i>=90&&i<=94){
            System.out.println("游乐园");
        }else if (i>=80&&i<=89){
            System.out.println("变形金刚");
        }else if (i>=0&&i<=79){
            System.out.println("挨打");
        }else { //键盘录入,scanner接收的是整数,所以键盘输入必须是整数,否则会报错
            System.out.println("错误");
        }

    }
}
  • 练习

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fYDykThI-1668262734106)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112154920157.png)]

package com.itheima.branch;

import java.util.Scanner;

public class IfDemo01 {
    public static void main(String[] args) {
        //需求,键盘录入成绩
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入成绩");
        int i = scanner.nextInt();
        if (i>=95&&i<=100){
            System.out.println("自行车");
        }else if (i>=90&&i<=94){
            System.out.println("游乐园");
        }else if (i>=80&&i<=89){
            System.out.println("变形金刚");
        }else if (i>=0&&i<=79){
            System.out.println("挨打");
        }else { //键盘录入,scanner接收的是整数,所以键盘输入必须是整数,否则会报错
            System.out.println("错误");
        }

    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2wm5dBPH-1668262734106)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112160849323.png)]

package com.itheima.branch;

import java.util.Scanner;

public class IfTest {
    public static void main(String[] args) {
        //需求: 键盘录入用户密码, 如果密码为 111111, 程序输出密码正确,否则输出密码有误
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入密码");
        int i = scanner.nextInt();
        if (i == 111111){
            System.out.println(true);
        }else {
            System.out.println(false);
        }
    }
}
2.switch
  • switch通过比较来决定进行哪个分支

  • switch(表达式){
      case 1:
      语句体1;
      break;
      case 2:
      语句体2;
      break;
      ...
      case n-1:
      语句体;
      break;
      default:
      语句体 n;
    }
    
  • switch执行流程

    • 先执行表达式的值,然后拿这个值去与case的值匹配
    • 与哪个case的匹配后,就执行对应的语句体,遇到break就跳出switch分支
    • 如果都不匹配,则执行default后的语句体

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eYSCSU3a-1668262734107)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112163234488.png)]

package com.itheima.branch;

public class SwitchDemo {
    public static void main(String[] args) {
        //switch分支
        // 目标:掌握switch分支的写法,并理解其执行流程
        // 需求:模拟一个电子备忘录系统
        // 周一:埋头苦干,解决bug
        // 周二:	请求大牛程序员帮忙
        // 周三:今晚啤酒、龙虾、小烧烤
        // 周四:主动帮助新来的女程序解决bug
        // 周五:今晚吃鸡
        // 周六:与王婆介绍的小芳相亲
        // 周日:郁郁寡欢、准备上班。


        String weekday = "周五";
        switch (weekday) {
            case "周一":
                System.out.println("埋头苦干,解决bug ");
                break;
            case "周二":
                System.out.println("请求大牛程序员帮忙");
                break;
            case "周三":
                System.out.println("今晚啤酒、龙虾、小烧烤 ");
                break;
            case "周四":
                System.out.println("主动帮助新来的女程序解决bug ");
                break;
            case "周五":
                System.out.println("今晚吃鸡 ");
                break;
            case "周六":
                System.out.println("与王婆介绍的小芳相亲 ");
                break;
            case "周日":
                System.out.println("郁郁寡欢、准备上班 ");
                break;
            default:
                System.out.println("输入有误");
        }
    }
}
  • if与switch的比较(各自适合什么业务场景)

    • if在功能上远远大于switch
    • 当条件是区间的时候,使用if分支结构
    • 当条件是与一个一个值比较的时候,使用switch,更合适,因为switch格式良好,性能较好,代码优雅
      • switch性能好是因为得到表达式的值后,直接去寻找相同的值,而if却是要从上到下一个一个去匹配
  • 使用switch需要注意的事项

    • 表达式数据类型只能是byte,short,int,char,JDK5支持枚举,JDK7支持String,不支持long,float,double

    • case后面的值不可以重复,只能是字面量,不能是变量

    • 正常使用switch的时候,不要忘记写break ,否则会出现穿透现象

      • swit的穿透性在某些情况下可以简化代码

        • 当存在多个case分支的代码相同,可以把相同的代码放到一个case块中,其他的case都通过穿透性穿透到该case块执行代码即可,可以简化代码;

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I89dQzTz-1668262734108)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112185825945.png)]

          package com.itheima.branch;
          
          import java.util.Scanner;
          
          public class SwitchDemo03 {
              public static void main(String[] args) {
                  Scanner scanner = new Scanner(System.in);
                  System.out.println("输入月份");
                  int mouth = scanner.nextInt();
                  switch (mouth){
                      case 1:
                      case 3:
                      case 5:
                      case 7:
                      case 8:
                      case 10:
                      case 12:
                          System.out.println("本月为31天");
                          break;
                      case 4:
                      case 6:
                      case 9:
                      case 11:
                          System.out.println("本月为30天");
                          break;
                      case 2:
                          System.out.println("闰年为29天,非闰年为28天");
                          break;
                      default:
                          System.out.println("输入有误");
                  }
          
              }
          }
          
package com.itheima.branch;

public class SwitchDemo02 {
    public static void main(String[] args) {
//        表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
        char a  =20;
        double i = 0.1;
        double j = 0.2;
        double m = i + j;//结果为0.30000000000000004 ,不是0.3,故不能在switch分支进行匹配
        //long范围太大,没必要,switch匹配太麻烦
        //小数运算不精确

        float b = 0.1f;
        float c = 0.2f;
        float n = b + c;
        System.out.println(n);
        System.out.println(m);
        switch (a){

        }

        int e = 20;

        //        case给出的值不允许重复,且只能是字面量,不能是变量。
        switch (a){
//            case e:
//            case 20:
//                System.out.println(true);
//                break;
//            case 20:

        }

        //        正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
        String weekday = "周五";
        switch (weekday) {
            case "周一":
                System.out.println("埋头苦干,解决bug ");
                break;
            case "周二":
                System.out.println("请求大牛程序员帮忙");
                break;
            case "周三":
                System.out.println("今晚啤酒、龙虾、小烧烤 ");
                break;
            case "周四":
                System.out.println("主动帮助新来的女程序解决bug ");
                break;
            case "周五":
            case "周六":
            case "周日":
                System.out.println("今晚吃鸡 ");
                break;
            default:
                System.out.println("输入有误");
                //今晚吃鸡
                //与王婆介绍的小芳相亲
                //郁郁寡欢、准备上班
                //输入有误
        }
    }
}

2、循环结构

1.for循环
  • 控制一段代码执行很多次

  • 格式:

    • for(初始化语句;循环条件;迭代语句){

      循环语句体(重复执行的代码)

      }

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yy91LC6J-1668262734109)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112190221883.png)]

  • for循环执行流程:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YYDSMTvd-1668262734111)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112190323735.png)]

    • 1.循环开始,执行int i= 0

      2.此时i=0,接着计算机执行循环条件语句:0<3,返回true,计算机跳到循环语句体执行,返回Hello World,然后执行迭代语句 i++

      3.此时i=1,接着计算机执行循环条件语句:1<3,返回true,计算机跳到循环语句体执行,返回Hello World,然后执行迭代语句 i++

      4.此时i=2,接着计算机执行循环条件语句:2<3,返回true,计算机跳到循环语句体执行,返回Hello World,然后执行迭代语句 i++

      5.此时i=3,接着计算机执行循环条件语句:3<3,返回false,循环立即结束

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ov8O3Yxx-1668262734112)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112190935007.png)]

  • for循环常见场景:减少代码的重复编写,灵活的控制程序的执行。

package com.itheima.loop;

public class ForDemo {
    public static void main(String[] args) {
        //for循环
        /*
        for(初始化语句;条件语句;迭代语句){
          循环体;
           }
           */
        //需求8888打印 12次
        for (int i = 1; i < 13; i++) {// < 判断次数是 :小于号后面的-初始值
            System.out.println("8888");
        }
        System.out.println("============");

        for (int i = 2; i <= 13; i++) {// <=判断次数是:<=好后面的-初始值+1
            System.out.println("8888");
        }
        System.out.println("===================");
        
        int j = 0;
        //需求:1-100的和?
        for (int i = 0; i < 101; i++) {
            j += i;
        }
        System.out.println(j);
    }
}
  • for循环案例1:求和

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0RApNuIa-1668262734113)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112191604773.png)]

    package com.itheima.loop;
    
    public class ForTest {
        public static void main(String[] args) {
            //for循环的应用
            //1-5之间整数的和
            int sum = 0;
            for (int i = 1; i <= 5; i++) {
                sum += i;
            }
            System.out.println("1-5之间整数的和"+sum);
        }
    }
    

  • for循环案例2:求奇数和

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ykiSpN7-1668262734113)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112191623914.png)]

package com.itheima.loop;

public class ForTest2 {
    public static void main(String[] args) {
        //for循环的应用
        // 需求:1-10之间奇数数的和
        //方法一
        int sum = 0;
        for (int i = 1; i <= 10; i++) {
            if (i%2 == 1){
                sum+=i;
            }
        }
        System.out.println("1-10之间奇数的和:"+sum);

        System.out.println("==============");

        //方法二
        int sum2 = 0;
        for (int i = 1; i <11 ; i+=2) {
            sum2+=i;
        }
        System.out.println("1-10之间奇数的和"+sum2);


        //        1-10之间偶数的和
        int sum3 = 0;
        for (int i = 0; i < 11; i+=2) {
            sum3+=i;
        }
        System.out.println("1-10之间偶数的和"+sum3);
    }
}
  • for循环案例:打印水仙花数

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-agZ9GpVs-1668262734114)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112191734220.png)]

package com.itheima.loop;

public class ForTest3 {
    public static void main(String[] args) {
        //for循环的应用
        //需求:在控制台输出所有的“水仙花数”,水仙花数必须满足如下2个要求:水仙花数是一个三位数;水仙花数的个位、十位、百位的数字立方和等于原数

        int count = 0;
        for (int i = 100; i < 1000; i++) {
            int ge = i%10;
            int shi = i/10%10;
            int bai = i/10/10%10;
            if (ge*ge*ge+shi*shi*shi+bai*bai*bai == i){
                System.out.print(i+"\t");
                count++;
            }
        }
        System.out.println();//代表换行
        System.out.println("水仙花个数:"+count);
    }
}
2.while循环
  • 格式:

    • 初始化语句

      while(循环条件){

      循环体条件(被重复执行的代码)

      迭代语句

      }

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-12FNfgN1-1668262734115)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112192228291.png)]

  • 执行流程:

    • 循环一开始,执行int i = 0 一次。
      此时 i=0 ,接着计算机执行循环条件语句:0 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
    • 此时 i=1 ,接着计算机执行循环条件语句:1 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
    • 此时 i=2 ,接着计算机执行循环条件语句:2 < 3 返回true , 计算机就进到循环体中执行,输出 :helloWorld ,然后执行迭代语句i++。
    • 此时 i=3 ,然后判断循环条件:3 < 3 返回false, 循环立即结束!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGVsAGit-1668262734115)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112192403786.png)]

package com.itheima.loop;

public class WhileDemo {
    public static void main(String[] args) {
        //while循环
        int i =0;
        while (i<3){
            System.out.println(8888);
            i++;
        }
    }
}
  • while与for的区别
    • 功能上完全一样,for能解决的while也能解决,反之亦然;
    • 使用规范:在不知道循环几次的时候用while,知道几次循环的时候用for
  • 案例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3A22rrt5-1668262734116)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112193049389.png)]

package com.itheima.loop;

public class WhileTest {
    public static void main(String[] args) {
        //需求:世界最高山峰珠穆朗玛峰高度是:8848.86米=8848860毫米,它的厚度是0.1毫米。请问:该纸张折叠多少次,可以折成珠穆朗玛峰的高度?

         double peakHeight = 8848860;  // 山峰高度
//                          13421772.8  =1.34217728E7      E7=10的7次方
         double paperThickness = 0.1;  // 纸张厚度
        int count = 0;
        while (paperThickness<peakHeight){
            paperThickness*=2;
            count++;
        }
        System.out.println("纸张折叠次数:"+count+"\t"+"纸张高度:"+paperThickness);
    }
}
3.do-while循环
  • 结构

    • 初始化语句

      do{

      ​ 循环体语句;

      ​ 迭代语句;

      }while(循环条件);

  • 执行流程

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M72Nsz5S-1668262734116)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112193425398.png)]

  • do-while循环的特点:先执行后判断,一定会执行一次循环体

    package com.itheima.loop;
    
    public class DoWhileDemo {
        public static void main(String[] args) {
            //do-while循环
            int i= 0;
            do {
                System.out.println(8888);
                i++;
            }while (i<3);
            System.out.println(i);
    
        }
    }
    
  • 三种循环体的区别

    • for循环和while循环都是先判断再执行,do-while是先执行后判断
    • for循环与while循环的执行流程一样,功能没区别
    • 使用规范:在不知道循环几次的时候用while,知道几次循环的时候用for
    • 其他区别,for循环中控制循环的变量只能在循环中使用。while循环中的控制循环变量在循环后仍可以使用(for循环变量定义在for循环语句体里,while循环变量定义在while语句体外)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pc1LAPcC-1668262734117)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112214956305.png)]

4.死循环
  • 可以一直执行下去的循环,没有人为干预不能停下来

  • 3种写法

    • for( ; ; ){

      循环语句体;

      }

    • while(true){

      循环语句体;

      }

    • do{

      循环语句体;

      }while(true)

  • while死循环是最经典常用的死循环:比如说服务器程序

package com.itheima.loop;

public class DeadLoop {
    public static void main(String[] args) {
        //for死循环
//            for (;  ; ) {
//                System.out.println(6666);
//            }

        //因为for死循环一直执行,所以会导致while死循环排不上,会报错,要取消for循环才可
        //while死循环
        while (true) {
            System.out.println(8888);

        }

//            //do-while死循环
//            do {
//                System.out.println(9999);
//            }while (true);
        }
    }
}
  • 练习

    package com.itheima.loop;
    
    import java.util.Scanner;
    
    public class DeadLoopTest {
        public static void main(String[] args) {
          int psd = 520;
            Scanner scanner = new Scanner(System.in);//在外边因为创建对象占用内存空间,在死循环里会不断创建对象,浪费内存
            while (true){
    //            Scanner scanner = new Scanner(System.in);
                System.out.println("输入密码");
                int password = scanner.nextInt();
    
                if (password == psd ){
                    System.out.println("欢迎进入");
                    break;
                }else {//可读性好
                    System.out.println("密码错误");
                }
    //            if (password == psd ){
    //                System.out.println("欢迎进入");
    //                break;
    //            }
    //            System.out.println("密码错误");
            }
    
        }
    }
    
5.循环嵌套
  • 循环里面又包含循环

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V6G7aNDX-1668262734117)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112215900699.png)]

  • 循环嵌套的特点:

    • 外部每循环一次,内部循环全部执行完一轮
  • 案例:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mITV3T8Q-1668262734118)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112220134616.png)]

package com.itheima.loop;

public class NestedLoop {
    public static void main(String[] args) {
        //循环嵌套
        //打出一个4行5列的*矩形
        for (int i = 0; i <4 ; i++) {
            for (int j = 0; j <5 ; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

        //九九乘法表
        for (int i = 1; i <10 ; i++) {
            for (int j = 1; j < = i ; j++) {
                int num= i*j;
//                System.out.print(num+"="+i+"*"+j+"\t");
                System.out.print(i+"*"+j+"="+num+"\t");
            }
            System.out.println();
        }
    }
}

3、跳转关键字:break,continue

  • break:表示跳出并且结束循环的执行

  • continue:表示跳出本次循环,直接进入到下一个循环

  • 注意:

    • break:只能用于结束所在循环,或者switch分支使用
    • continue:只能在循环中进行
  • package com.itheima.loop;
    
    public class BreakAndContinueDemo {
        public static void main(String[] args) {
            //break
            //在第6次结束循环
            for (int i = 0; i < 20; i++) {
                System.out.println(i);
                if (i ==5 ){
                    break;
                }
            }
    
            System.out.println();
    
            //continue
            //第3次循环不执行
            for (int i = 0; i < 6; i++) {
                if (i ==2 ){
                    continue;
                }
                System.out.println(i);
            }
    
    
        }
    }
    
  • 案例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wigH5UJ1-1668262734118)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112220629335.png)]

package com.itheima.loop;

import java.util.Scanner;

public class DeadLoopTest {
    public static void main(String[] args) {
      int psd = 520;
        Scanner scanner = new Scanner(System.in);//在外边因为创建对象占用内存空间,在死循环里会不断创建对象,浪费内存
        while (true){
//            Scanner scanner = new Scanner(System.in);
            System.out.println("输入密码");
            int password = scanner.nextInt();

            if (password == psd ){
                System.out.println("欢迎进入");
                break;
            }else {//可读性好
                System.out.println("密码错误");
            }
//            if (password == psd ){
//                System.out.println("欢迎进入");
//                break;
//            }
//            System.out.println("密码错误");
        }

    }
}

4、案例技术:生成随机数

1.Random随机数的生成
  • Random作用:生成随机数,只能是[0,9]
import java.util.Random;

public class Demo {
    public static void main(String[] args) {
        //Random随机数
        Random r = new Random();
        int number = r.nextInt(10);
        System.out.println("随机生成了:"+number);
    }  
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UdpXDZ7c-1668262734119)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112221348160.png)]

2.生成任意区间的随机数
  • 区间:[m,n],那么 int number = r.nextInt==(n-m+1)+m==;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zrE1FYDa-1668262734120)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112221725659.png)]

  • 案例:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ixe7FxdE-1668262734120)(C:\Users\王超越\AppData\Roaming\Typora\typora-user-images\image-20221112221812018.png)]

package com.itheima.random;

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

public class Test {
    public static void main(String[] args) {
        //Random随机数
        //需求:猜1-100的随机数
        Random r = new Random();
        int i = r.nextInt(100) + 1;
        Scanner scanner = new Scanner(System.in);
        while (true){
            System.out.println("输入您要猜的1-100数");
            int j = scanner.nextInt();
            if (j > i){
                System.out.println("您输入的数大了");
            }else if (j<i){
                System.out.println("您输入的数小了");
            }else {
                System.out.println("您输入的数正确,撒花");
                break;
            }
        }
    }
}
]

#### 2.生成任意区间的随机数

- 区间:[m,n],那么 int number = r.nextInt==(n-m+1)+m==;

[外链图片转存中...(img-zrE1FYDa-1668262734120)]

- 案例:

  [外链图片转存中...(img-Ixe7FxdE-1668262734120)]

```java
package com.itheima.random;

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

public class Test {
    public static void main(String[] args) {
        //Random随机数
        //需求:猜1-100的随机数
        Random r = new Random();
        int i = r.nextInt(100) + 1;
        Scanner scanner = new Scanner(System.in);
        while (true){
            System.out.println("输入您要猜的1-100数");
            int j = scanner.nextInt();
            if (j > i){
                System.out.println("您输入的数大了");
            }else if (j<i){
                System.out.println("您输入的数小了");
            }else {
                System.out.println("您输入的数正确,撒花");
                break;
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值