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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 斥候7300 中级黑马   /  2015-11-28 21:29  /  2667 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

需求:猜数字游戏(按照功能模块进行设计游戏代码)。
游戏规则,先随机产生0-100之间的一个数字。然后根据键盘输入的数字和这个随机数进行比较,给出提示信息。
根据提示信息重新输入数据,再次和随机数进行比较,如此重复,直到猜中为止。猜中后提示是否再玩一次。
若选择继续玩,从新产生一个随机数。从新获取键盘录入,比较,重复下去。

7 个回复

倒序浏览
1、需要随机数,可以将产生随机数的这个功能进行单独封装成一个方法,此方法就只产生随机数并返回,不做其他任何事情。
* 2、获取键盘录入数据,由于需求要求不断获取键盘录入的数据,因此可以将键盘录入单独封装成一个功能。此功能就只获取键盘输入的数据。
* 3、由于键盘录入的数据都是字符串,而需要转换成数字和随机数比较,可以专门定义功能转将字符串转换成数字。
*                 但键盘录入的可以任意的数据,而只有纯数字的字符串才可以转成对应的数字,所以在转换的过程会有异常发生。
*                 当转换失败(发生NumberFormatException异常时)提示输入数据错误,请重新输入数字,并重新获取键盘录入,
*                 到输入正确的数据转换成对应的数字后,这次获取键盘录入才结束。
* 4、获取到键盘录入数据后,就可以和随机数进行比较,比较中给出提示信息(输入数据大,输入数据偏小),然后提示重新输入数据。
*                 这个比较过程同样可以单独封装成一个方法。
* 5、当猜中后,提示是否还要继续玩游戏,根据输入的数据判断是否重新继续游戏,或者退出游戏。同样可以将这个判断单独封装一个方法。
*                 在获取用户输入是否继续玩游戏的这个功能可以调用第2步中的获取键盘录入数据。
* 6、需要主函数启动这个游戏,并进行测试
回复 使用道具 举报
public class GuessNumberGame {
        /**
         * 此方法是获取待猜的数据
         *
         * @return
         */
        public static int getGuessNum() {
                // 创建Random对象,主要用于产生随机数
                Random rd = new Random();
                // 调用rd的nextInt方法产生100以内的一个随机数
                int guessNum = rd.nextInt(100);
                // 返回当前产生的随机数
                return guessNum;
        }

        /**
         * 获取键盘录入的数据
         *
         * @param args
         */
        public static int getKeyNum(){
               
                //将键盘获取s的数据转成int类型数据
                String keyStr= getKeyStr("请输入您要猜的数据:");
                int keyNum;
                //使用循环获取输入的数据,直到数据的数据满足条件循环才会停止
                while(true){
                        //使用try catch方式判断用户输入的数据是否为数字,若非数字,再catch中继续调用获取键盘录入方法
                        try{
                                //使用Integer的parseInt方法将输入的转换成int类型数据
                                keyNum = Integer.parseInt(keyStr);
                                //判断输入的数据是否在0-100之间
                                if(keyNum<0 || keyNum>100){
                                        System.out.println("请输入1-100之间的数据");
                                        keyStr= getKeyStr("请输入您要猜的数据:");
                                }
                                break;
                        }catch(NumberFormatException e){
                                //捕获到异常后,给出提示信息,并重新调用获取键盘录入功能,重新获取录入的数据
                                System.out.println("输入数据非法,请重新输入数据");
                                keyStr= getKeyStr("请输入您要猜的数据:");
                        }
                }
               
                return keyNum;
        }
        /*
         * 用于读取键盘录入的数据,将获取到的数据返回
         */
        private static String getKeyStr(String str) {
                // 创建Scanner对象获取键盘录入的数据
                Scanner sc = new Scanner(System.in);
                //提示请输入数据
                System.out.println(str);
                // 获取键盘录入的数据
                String keyStr = sc.next();
                //返回键盘录入的数据
                return keyStr;
        }
        /**
         * 开始猜数字,首先获取随机数和键盘录入数据
         * 判断输入的数据和随机数的大小关系。
         * 给出提示信息,根据提示信息,可以重新输入数据
         */
        public static void startGuess(){
                // 获取到随机数
                int guessNum = getGuessNum();
                // 获取到键盘录入的数字
                int keyNum = getKeyNum();
                // 循环判断输入的数据和随机数的关系,只要不相等,循环就成立
                while(guessNum != keyNum){
                        if(guessNum > keyNum){ // 键盘录入数据偏小
                                System.out.println("输入的数据太小了!");
                                // 从新获取键盘录入数据
                                keyNum = getKeyNum();
                        }else{  // 键盘录入数据偏大
                                System.out.println("输入的数据太大了!");
                                keyNum = getKeyNum();
                        }
                }
                // 程序走到这里,说明循环已经结束,而循环结束的条件就是随机数和录入的数据相等,
                // 即就是猜中了
                System.out.println("恭喜您猜中了,您非常聪明了!");
        }
        /**
         * 猜中后提示是否还要继续玩
         * @return
         */
        public static boolean reGame(){
                // 调用获取键盘录入数据方法,获取选择的是继续玩,还是退出游戏
                String str = getKeyStr("您还想再玩一把吗?输入YES继续,输入其他任意字符退出游戏");
                // 判断输入的是继续玩,还是退出
                if(str.equalsIgnoreCase("yes")){
                        // 选项的是继续玩返回真值
                        return true;
                }
                // 程序走到这里,说明上面的判断不成立,即选择了退出游戏
                return false;
        }

        // 游戏运行入口,即启动游戏
        public static void main(String[] args) {
                System.out.println("==================欢迎玩猜数字游戏==================");
                startGuess();
                while(reGame()){
                        startGuess();
                }
                System.out.println("==================游戏结束==================");
        }

}
回复 使用道具 举报
参观一下  
回复 使用道具 举报
1.需要随机数2、获取键盘录入数据
回复 使用道具 举报
袁有福123 发表于 2015-11-28 23:31
1.需要随机数2、获取键盘录入数据

下面这个是我自己写的,给点评论呗 ,哥们我在报名黑马课程,需要技术分
//使用Random类,完成猜数字游戏。
public class Demo {
        public static void main(String[] args) {
                //定义一个变量表示是否要玩并赋初始值为true
                boolean begin=true;
               
                //用一个循环语句要判断玩家是不是要接着玩
                while (begin) {
                        //创建一个Random对象
                        Random r=new Random();
                        //随机产生一个0-10以内的数
                        int sys= r.nextInt(100);
                        //键盘输入一个数
                        Scanner s =new Scanner(System.in);
                        System.out.println("请输入一个数");
                        String shu = s.nextLine();//键盘输入一个数,赋值给字符串
                        int sh=Integer.parseInt(shu);//把字符串转成int型数据
                       
                        //判断输入的数据sh 是否等于系统产生的数据sys
                        while (sh!=sys) {
                                if (sh>sys) {
                                        System.out.println("输入的数据大了,请重新输入");
                                }else{
                                        System.out.println("输入的数据小了,请重新输入");
                                }       
                                shu= s.nextLine();  //键盘重新输入一个数
                                sh =Integer.parseInt(shu);
                               
                        }
                        System.out.println("输入的数据正确"+sh);
                        //是否要从新玩
                        System.out.println("是否要从新玩,是请输入  yes,不需要请输入其他任意字符  ");
                        String sAgain=s.nextLine();
                        //判断玩家是否要重新玩
                        if (!(sAgain.equals("yes"))) {
                                begin = false;
                        }       
                       
                       
                }
        }
2、}
回复 使用道具 举报
太牛了都。。。。。。。
回复 使用道具 举报
其实感觉,就掌握这个就好了.
import java.util.Scanner;

public class Demo6 {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入您猜的数字:");

                int or = (int) (Math.random() * 100 + 1);
                while (true) {
                        int num = sc.nextInt();
                        if (num > or) {
                                System.out.println("大了");
                        } else if (num < or) {
                                System.out.println("小了");
                        } else {
                                System.out.println("终于对了");
                                break;
                        }
                }
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马