A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

这是一个电脑自动猜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$<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;
        }
}

~LH]CI0`)[72_I{}A]YTZFD.png (22.08 KB, 下载次数: 2)

1000次的开始

1000次的开始

G68447QT35VO8N9311GCZBP.png (93.12 KB, 下载次数: 5)

1000次的结束

1000次的结束
您需要登录后才可以回帖 登录 | 加入黑马