package hello;
//猜数游戏
import java.util.Scanner;
public class Main {//类名不能是Math,否则会引用不了random方法
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner in=new Scanner(System.in);
int number=(int)(Math.random()*100+1);
//[0,1)-->[0,100)-->[1,100]
int a;
int count = 0;
do{
a=in.nextInt();
count+=1;
if(a>number) {
System.out.println("偏大了");
}
else if(a<number) {
System.out.println("偏小了");
}
}while(a!=number);
in.close();
System.out.println("恭喜你猜对了!一共猜了"+count+"次");
}
}
相关问题:为什么方法正确的话,100以内的数最多猜7次就够了?
回答: 利用二分法进行一个确定范围内的数字查找;二分法的原理:通过对左右两端取中间值,再将目标值与中间值进行比较,从而确定一个容纳数字量为原来范围的一半的新范围;由此不断地进行范围的2倍缩小;使用一次即为2的1次幂,使用n次即为2的n次幂;
由于100与2的7次幂比较,2的7次幂为128,是大于100的离100最近的2的n次幂,则寻找7次所缩小到的范围是原范围的1/128,对于寻找整数已经足够,所以至少在7次以内可以将目标值搜索到。