需求:猜数字的升级版。
需求:先随机生成一个范围在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("程序结束");
}
}