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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贺小梅 中级黑马   /  2015-11-27 00:16  /  535 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    2015年11月25日,在黑马的第十五天,每天都是那么忙碌充实,不过今天有点不爽,被一道题虐了。大D号称班上很少人写出来,大家都感觉应该是一个很难的题目。说到这点你们是不是很想知道这道题是什么呢。好吧,我先剧透吧,就是写一个石头剪刀布的游戏。主要是自己当时真的没有任何思路,等大家都在努力写代码的时候我却在发呆,感觉脑海一篇空白,后来认真想想,才知道是自己的思路不对。好吧,下面就把题目给大家说说吧。
题目:写一个石头剪刀布的游戏。三局两胜制,甲方是电脑,乙方是自己。题目要求如下:
如果是平局,重新输入,如果不是平局,需要在控制台上打印:
第一局:XXX胜利
第二局:XXX胜利
第三局:XXX胜利
最终XXX胜利


好吧,先开始分析:
1、需要从键盘录入自己要出的拳,使用Scanner
2、电脑的出拳是随机的,考虑使用random来产生随机数,再将相应的值赋予实际意义
3、分别当自己输入石头、剪刀、布的时候,进行不同的判断
4、采用三局两胜制,当胜局出现三次以后,整个循环结束,判断是电脑胜利的次数多还是人的次数多,最后输出

代码如下:

import java.util.Scanner;           //导包
public class Example01 {
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);    //创建Scanner的对象
    int ren = 0;                                //定义人的胜利次数
    int computer = 0;                        //定义电脑胜利的次数
    while(true) {                                        //在比较中会出现平局的情况,
    System.out.println("请输入您要出的拳:");
    String name = sc.nextLine();    //从键盘接收一个字符串,即人要出的拳
    int i = (int)(Math.random() * 3); //随机生成0~2三个随机数,赋予相应的意义   0代表石头  1代表剪刀  2代表布

        //判断当键盘录入是石头时
               
        if("石头".equals(name)) {      //如果从键盘录入的是一个石头,就进行该判断
        switch (i) {
        case 0:        //当随机生成的数是0时,即代表键盘输入的是石头
            System.out.println("电脑出的是石头,平局");
            break;
        case 1:                   //当随机生成的数是1时,即代表键盘输入的是剪刀
            System.out.println("电脑出的是剪刀,您赢了~");
            ren++;
            break;
        default:          //该种情况就是随机生成了一个布
            System.out.println("电脑出的是布,您输了~");
            computer++;
            break;
         }

        //判断当键盘录入是剪刀时

    }else if("剪刀".equals(name)) {
        switch (i) {
        case 0:
            System.out.println("电脑出的是石头,您输了");
            computer++;
            break;
        case 2:
            System.out.println("电脑出的是布,您赢了");
            computer++;
            break;
        default:
            System.out.println("电脑出的是剪刀,平局");
            break;
        }

        //判断当键盘录入是布时

    }else if("布".equals(name)) {
        switch (i) {
        case 0:
            System.out.println("电脑出的是石头,您赢了~");
            ren++;
            break;
        case 1:
            System.out.println("电脑出的是剪刀,您输了~");
            computer++;
            break;
        default:
            System.out.println("电脑出的是布,平局");
            break;
                }
    }

        //判断是不是出现胜利的次数总共是三局,如果是,比较两个的大小,输出胜利者,并结束所有循环。
        if(3 == computer + ren) {
            if(computer > ren) {
                System.out.println("电脑胜利");
                break;
         }else {
                System.out.println("人类胜利");
                break;
                                }
                        }
                 }
        }
}

    上面就是一个石头剪刀布的游戏,一开始没有思路,就是在纠结字符串怎么能拿来和int的数值做比较,后来才知道自己的思维方向就是一个错误,给大家的意见就是,在思考问题的时候最好把想到的东西写下来,不能凭空想象,是没有任何结果的,我一开始想这个问题的时候就是在大脑里想象,什么都没有写,导致思路布明朗,后来通过写出来,思路开始明朗,希望大家要以我为鉴。
这个就是今天的练习题了,如果你有更好的思维方式,麻烦您一点要告诉我,希望大神可以进来给小弟指点指点,小弟不胜感激。。谢谢
好吧,今天就到这吧,明天继续.......






2 个回复

倒序浏览
找点需求练练手
回复 使用道具 举报
哈哈哈 有点好玩
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马