利用Java来实现猜数字(下)

需求:猜数字的升级版。
需求:先随机生成一个范围在1-100之间的随机数number1。再创建一个随机数number2去猜系统生成的随机数number1。直到两个数字相同为止。要求,再随机生成的过程中,随机数number2的生成范围要慢慢接number1的范围,效果如下

 

 题目拆解分析

首先,题目中声明了要随机声明数字,所以首先要用到的便是random函数 , 其次两者的随机数进行比较,还要不断精确,这就需要我们需要使用if-else 语句 ; while的死循环 ; 以及break语句的运用 

开写

首先,由

题目可知,我们先要创建随机数对象 , 创建一个取值范围在[ 1 , 100 ] 的随机数并且输出

        Random r = new Random();
        int num1 = r.nextInt(100)+1;
        System.out.println("系统本次随机生成的数字是:"+num1);

然后 因为边界值在不断的变化,我们要先去定义好最初的边界值

int min = 1 ,  max = 100;

然后利用随机数和while的死循环去输出边界值 范围便是[ min , max ]

用number1 和 number2 进行比较,比较的结果有三种可能
   i: 如果 number1 > number2 ,则 提示生成的随机数过小。修改边界值min, min = number2 + 1;
   ii: 如果 number1 < number2,则 提示生成的随机数过大。修改边界值max , max = number2 - 1
   iii: 如果 number1 == number ,则 提示生成正确。使用break结束死循环

    while (true) {
            int num2 = r.nextInt(max-min+1)+min;
            System.out.println("本次生成的随机数是"+num2);
            if (num1<num2){
                System.out.println("生成随机数过大,即将生成新的随机数");
                max = num2 - 1;
                System.out.println("即将生成范围在:" + min + "-" + max + "的随机数");
            } else if (num1>num2) {
                System.out.println("生成随机数过小,即将生成新的随机数");
                min = num2 + 1;
                System.out.println("即将生成范围在:" + min + "-" + max + "的随机数");
            }else {
                System.out.println("生成正确,即将退出");
                break;
            }
        }

完整代码如下:

import java.util.Random;

public class Test08 {
    public static void main(String[] args) {
        Random r = new Random();
        int num1 = r.nextInt(100)+1;
        System.out.println("系统本次随机生成的数字是:"+num1);
        System.out.println("即将生成范围在:1-100的随机数");
        int min = 1 ,  max = 100;
        while (true) {
            int num2 = r.nextInt(max-min+1)+min;
            System.out.println("本次生成的随机数是"+num2);
            if (num1<num2){
                System.out.println("生成随机数过大,即将生成新的随机数");
                max = num2 - 1;
                System.out.println("即将生成范围在:" + min + "-" + max + "的随机数");
            } else if (num1>num2) {
                System.out.println("生成随机数过小,即将生成新的随机数");
                min = num2 + 1;
                System.out.println("即将生成范围在:" + min + "-" + max + "的随机数");
            }else {
                System.out.println("生成正确,即将退出");
                break;
            }
        }
        System.out.println("程序结束");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值