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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1597854328 中级黑马   /  2019-1-22 11:00  /  669 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  猜数字案例案例介绍
我们在日常生活中,经常与朋友们玩猜数字的游戏,非常的有趣。现在我们通过java把这个猜数字游戏编写出来。
猜数字案例是要完成什么样的功能呢?顾名思义,这个游戏就是你出个数字、我来猜。
游戏操作如下:
l 后台预先生成一个1-100之间的随机数,用户键盘录入猜数字
l 如果猜对了,打印“恭喜您,答对了”
l 如果猜错了
猜大了:打印sorry,您猜大了!
猜小了:打印sorry,您猜小了!
l 直到数字猜到为止

在案例开始之前,我们先要学习如下知识点:
l 随机数类Random
l 选择结构if
l 循环结构while


案例需求分析、
猜数字案例的需求如下:
l 后台预先生成一个1-100之间的随机数,用户键盘录入猜数字
l 如果猜对了,打印“恭喜您,答对了”
l 如果猜错了
猜大了:打印sorry,您猜大了!
猜小了:打印sorry,您猜小了!
l 直到数字猜到为止

我们经过分析,得出如下的分析结果:
l 1.通过Random类中方法nextInt(),生成一个1-100之间的随机数
l 2.输入猜的数字
l 3.通过while循环,进行猜数字对错判断
n 猜对,跳出循环,游戏结束
n 猜错了,根据结果,给出提示,接着猜数字,游戏继续
u 如果猜大了,打印sorry,您猜大了!继续下一次循环        
u 如果猜小了,打印sorry,您猜小了!继续下一次循环
实现代码步骤
分析完毕之后,在main()方法中,我们一起来完成代码的编写:GuessNumber.java
[Java] 纯文本查看 复制代码
public class GuessNumber {
        public static void main(String[] args) {
                //1.通过Random类中方法nextInt(),生成一个1-100之间的随机数
                int randomNumber = new Random().nextInt(100);
                System.out.println("随机数已生成!");
                //2.输入猜的数字
                System.out.println("----请输入您猜的数字:----");
                Scanner sc = new Scanner(System.in);
                int enterNumber = sc.nextInt();
                //3.通过while循环,进行猜数字对错判断
                //猜对,跳出循环,游戏结束
                while(enterNumber != randomNumber){
                        //猜错了,根据结果,给出提示,接着猜数字,游戏继续
                        if(enterNumber>randomNumber) {
                                //如果猜大了,打印sorry,您猜大了!继续下一次循环
                                System.out.println("sorry,您猜大了!继续下一次循环");
                        }else {
                                //如果猜小了,打印sorry,您猜小了!继续下一次循环
                                System.out.println("sorry,您猜小了!继续下一次循环");
                        }
                        //输入猜的数字
                        System.out.println("----请输入您猜的数字:----");
                        enterNumber = sc.nextInt();
                }
                System.out.println("恭喜您,答对了!");
        }
}
总结知识点总结
l 选择结构 if
n 方式1:
                格式:
                        if(条件表达式) {
                                语句体;
                        }
                执行流程:
                        如果条件表达式值为true, 执行语句体
                        如果条件表达式值为false,不执行语句体

n 方式2:
                格式:
                        if(条件表达式) {
                                语句体1;
                        } else {
                                语句体2;
                        }
                执行流程:
                        如果条件表达式值为true, 执行语句体1
                        如果条件表达式值为fales,执行语句体2
n 方式3:
                格式:
                        if(条件表达式1) {
                                语句体1;
                        } else if (条件表达式2) {
                            语句体2;
                        } else if (条件表达式n...) {
                                语句体n...
                        }
                        ...
                        else {
                                语句体n+1;
                        }
                执行流程:
                        哪一个条件表达式成立,执行对应的语句体,
                        如果所有的条件表达式都不成立,执行最后else中的语句体

n 注意事项:
                1,条件表达式无论是简单还是复杂,结果都是boolean类型的值
                2, 如果语句体只有一条语句,大括号可以省略,
                   如果是多条语句,大括号不能省略,建议什么时候都写上大括号
l 循环语句For
n 格式:
                for (初始化表达式;条件表达式; 控制条件表达式) {
                        语句体;
                }
n 执行流程:
                1,初始化表达式;
                2,条件表达式
                         如果结果为true, 执行语句体
                         如果结果为flase, 循环结束
                3, 当语句体执行后, 执行控制条件表达式
                4,接下来,回到第二步, 直到条件表达式为false 循环结束
l 循环语句 while
n 格式:
                初始化表达式;
                while (条件表达式) {
                        语句体;
                        控制条件表达式;
                }
n 执行流程;
                1,初始化表达式;
                2,条件表达式
                         如果结果为true, 执行语句体
                         如果结果为flase, 循环结束
                3, 当语句体执行后, 执行控制条件表达式
                4,接下来,回到第二步, 直到条件表达式为false 循环结束跳转语句(breakcontinue
l 循环语句  do...while
n 格式:
                初始化表达式;
                do {
                        语句体;
                        控制条件表达式;
                } while (条件表达式);
n 执行流程:
                1,初始化表达式;
                2, 执行语句体
                3, 执行控制条件表达式
                4, 执行条件表达式,
                        如果结果为true, 继续执行语句体
                        如果结果为false, 循环结束
l 跳转控制语句
        break; 跳出循环
        continue; 结束本次循环
l Scanner类
n 获取键盘录入的数据,对获取数据的具体操作进行了封装,只需要调用方法,即可得到键盘录入的数据。
n 常用的方法
public int nextInt():获取键盘录入的数据,返回int类型值
public String next():获取键盘录入的数据,返回String类型值
l Random类:随机数类,用来产生多种类型的随机数
n 方法:
public int nextInt(int n) 返回一个,在 0(包括)和指定值(不包括)之间int随机数
Java基础语法

流程控制语句
选择结构switch
switch 条件语句也是一种很常用的选择语句,它和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码。例如,在程序中使用数字1~7来表示星期一到星期天,如果想根据某个输入的数字来输出对应中文格式的星期值,可以通过下面的一段伪代码来描述:
用于表示星期的数字
        如果等于1,则输出星期一
        如果等于2,则输出星期二
        如果等于3,则输出星期三
        如果等于4,则输出星期四
        如果等于5,则输出星期五
        如果等于6,则输出星期六
        如果等于7,则输出星期天
对于上面一段伪代码的描述,大家可能会立刻想到用刚学过得if…else if…else语句来实现,但是由于判断条件比较多,实现起来代码过长,不便于阅读。Java中提供了一种switch语句来实现这种需求,在switch语句中使用switch关键字来描述一个表达式,使用case关键字来描述和表达式结果比较的目标值,当表达式的值和某个目标值匹配时,会执行对应case下的语句。具体实现代码如下:
[Java] 纯文本查看 复制代码
switch(用于表示星期的数字) {
    case 1 :
        输出星期一;
        break;
    case 2 :
        输出星期二;
        break;
    case 3 :
        输出星期三
        break;
    case 4 :
        输出星期四;
        break;
    case 5 :
        输出星期五;
        break;
    case 6:
        输出星期六;
        break;
    case 7:
        输出星期天;
        break;
}

l 上面改写后的伪代码便描述了switch语句的基本语法格式,具体如下:

在上面的格式中,switch语句将表达式的值与每个case中的目标值进行匹配,如果找到了匹配的值,会执行对应case后的语句,如果没找到任何匹配的值,就会执行default后的语句。switch语句中的break关键字将在后面的做具体介绍,此处,我们只需要知道break的作用是跳出switch语句即可。
需要注意的是,在switch语句中的表达式只能是byteshortcharint类型的值,如果传入其它类型的值,程序会报错。但上述说法并不严谨,实际上在JDK5.0中引入的新特性enum枚举也可以作为switch语句表达式的值,在JDK7.0中也引入了新特性,switch语句可以接收一个String类型的值。
选择结构switch练习
接下来通过一个案例演示根据数字来输出中文格式的星期,如下所示。SwitchDemo01.java
[Java] 纯文本查看 复制代码
public class SwitchDemo01 {
        public static void main(String[] args) {
                int week = 5;
                switch (week) {
                case 1:
                        System.out.println("星期一");
                        break;
                case 2:
                        System.out.println("星期二");
                        break;
                case 3:
                        System.out.println("星期三");
                        break;
                case 4:
                        System.out.println("星期四");
                        break;
                case 5:
                        System.out.println("星期五");
                        break;
                case 6:
                        System.out.println("星期六");
                        break;
                case 7:
                        System.out.println("星期天");
                        break;
                default:
                        System.out.println("输入的数字不正确...");
                        break;
                }
        }
}
运行结果如图所示。

图1-18 运行结果
上述代码中,由于变量week的值为5,整个switch语句判断的结果满足第17行的条件,因此打印“星期五”,例程中的default语句用于处理和前面的case都不匹配的值,将第3行代码替换为int week = 8,再次运行程序,输出结果如下图所示。

图1-19 运行结果
在使用switch语句的过程中,如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一次即可,这是一种简写的方式。例如,要判断一周中的某一天是否为工作日,同样使用数字1~7来表示星期一到星期天,当输入的数字为12345时就视为工作日,否则就视为休息日。接下来通过一个案例来实现上面描述的情况,如下所示。SwitchDemo02.java
[Java] 纯文本查看 复制代码
public class SwitchDemo02 {
        public static void main(String[] args) {
                int week = 2;
                switch (week) {
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                        // 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同
                        System.out.println("今天是工作日");
                        break;
                case 6:
                case 7:
                        // 当 week 满足值 6、7 中任意一个时,处理方式相同
                        System.out.println("今天是休息日");
                        break;
                }
        }
}
运行结果如下图所示。

图1-20 运行结果
上述代码中,当变量week值为12345中任意一个值时,处理方式相同,都会打印“今天是工作日”。同理,当变量week值为67中任意一个值时,打印“今天是休息日”。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马