这是一个电脑自动猜1-100随机数字的小程序。
你可以手动输入你要让电脑玩多少次猜数字的游戏。
最后它会给你输出一个平均猜出一个数字需要多少次。
图片内容是运行的结果。
隐藏内容是隐藏的代码,为了黑马币大家给力点。/**
*
*思路:逐步缩小猜数的范围。每次猜的数为这个范围中间的整数值
*每猜一次数:
*若猜的数大了,将下一次猜数范围的上边界赋值为刚猜的数,
*若猜的数小了,将下一次猜数范围的下边界赋值为刚猜的数。
*若猜中了,就OK
*
*/
import java.util.Scanner;
import java.util.Random;
class GuessNumber
{
public static void main(String[] args)
{
System.out.println("请输入你要玩猜数字游戏的次数:");
Scanner sc1 = new Scanner(System.in);
int cishu = sc1.nextInt();
int sum = 0;
for(int i = 1;i<=cishu;i++){
System.out.println("第"+i+"次游戏:");
int X = 100;
Random r = new Random();
int num = r.nextInt(X)+1;
sum += smartGuess(num,X);
}
double average = sum *1.0/ cishu;
System.out.println("系统平均每次游戏猜了"+average+"次猜中。");
}
public static int smartGuess(int num,int X){
int count = 0;//计数器
int xiaoYuNum$ = 1;//猜数范围的下边界
int daYuNum$= X+1;//猜数范围的上边界
int num$ = (daYuNum$+xiaoYuNum$)/2;
while(true){
count++;
if(num$>num){
System.out.println("第"+count+"次:系统自动猜的数字:"+num$+"大了");
daYuNum$ = num$;//猜的数大了,将范围的上边界赋值为刚猜的数
num$ = (daYuNum$+xiaoYuNum$)/2;//下次猜的数为猜数范围的中间值
}else if(num$
System.out.println("第"+count+"次:系统自动猜的数字:"+num$+"小了");
xiaoYuNum$ = num$;//猜的数小了,将范围的下边界赋值为刚猜的数
num$ = (xiaoYuNum$+daYuNum$)/2;//下次猜的数为猜数范围的中间
}else{
System.out.println("第"+count+"次:系统自动猜的数字:"+num$+"中了");
break;
}
}
System.out.println("总共花了"+count+"次猜中。");
return count;
}
}
2015-8-14 21:14 上传
1000次的开始
2015-8-14 21:14 上传
1000次的结束