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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 施家雄 高级黑马   /  2013-4-19 20:03  /  1459 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 施家雄 于 2013-4-19 20:08 编辑

这是一个剪刀石头布的小游戏。和大家分享下,判断电脑和人玩的输赢情况分别用了两种方法,一种是if...else,另一种是switch语句。
代码如下:
  1. /*
  2.         这是一个简单的小游戏,剪刀石头布!
  3.         
  4. */
  5. import java.util.Scanner;
  6. public class GameDemo {
  7.         public static void main(String[] args){
  8.         char isContinue='y';   //判断是否继续玩
  9.         int winCount=0;      //赢的次数,初使化为0
  10.         int loseCount=0;    //输的次数,初使为0
  11.         int eqCount=0;      //平的次数,初使化为0
  12.                
  13.         do{
  14.         System.out.println("1,出剪刀。");    //1代表出剪刀
  15.         System.out.println("2,出石头。");    //2代表出石头
  16.         System.out.println("3,出布。");       //3代表出布
  17.         System.out.println("请选择出什么:");
  18.         
  19.         //定义一个键盘,
  20.         Scanner input=new Scanner(System.in);
  21.         int player=input.nextInt();  //用键盘输入一个整数。
  22.         if(player>3||player<1)
  23.         {
  24.                 System.out.println("输入有误,请重新输入!");
  25.                 continue;        
  26.         }        
  27.         double c=Math.random();     //随机得到一个0到1的数
  28.         System.out.println("计算机的随机出手数:"+c);
  29.         c=Math.round(c*2);   //四舍五入,得到一个0到2的数。
  30.         c=c+1;    //得到一个1到3的数。
  31.         int computer=(int)c;
  32.         /*
  33.         if(computer==1)
  34.         {
  35.                 if(player==1)
  36.                 {
  37.                         System.out.println("平手");
  38.                         
  39.                 }
  40.                 else if(player==2)
  41.                 {
  42.                         System.out.println("你真厉害!");
  43.                 }
  44.                
  45.                 else
  46.                 {
  47.                         System.out.println("呵呵,你输了。");
  48.                 }
  49.         }
  50.         if(computer==2)
  51.         {
  52.                 if(player==1)
  53.                 {
  54.                         System.out.println("你输了。继续加油!");
  55.                 }
  56.                 if(player==2)
  57.                 {
  58.                         System.out.println("平手");
  59.                 }
  60.                 else
  61.                 {
  62.                         System.out.println("恭喜你,赢了!");
  63.                         
  64.                 }
  65.         }
  66.         if(computer==3)
  67.         {
  68.                 if(player==1)
  69.                 {
  70.                         System.out.println("恭喜你,赢了!");
  71.                 }
  72.                 else if(player==2)
  73.                 {
  74.                         System.out.println("哈哈,你输了!");
  75.                 }
  76.                 else
  77.                 {
  78.                         System.out.println("平局!");
  79.                 }
  80.         }
  81. */        
  82.         switch(computer)
  83.         {
  84.         case 1:           //计算机出剪刀
  85.         {
  86.                 switch(player)
  87.                 {
  88.                 case 1: System.out.println("不好不坏,平手!");
  89.                         eqCount++;
  90.                         break;
  91.                 case 2:        System.out.println("恭喜你,你赢了!");
  92.                         winCount++;
  93.                         break;
  94.                 case 3:        System.out.println("很抱歉,你输了!");
  95.                         loseCount++;
  96.                         break;
  97.                 }
  98.         }        
  99.                 break;
  100.         case 2:            //计算机出石头
  101.         {
  102.                 switch(player)
  103.                 {
  104.                 case 1: System.out.println("很抱歉,你输了!");
  105.                         loseCount++;
  106.                         break;
  107.                 case 2:        System.out.println("不好不坏,平手!");
  108.                         eqCount++;
  109.                         break;
  110.                 case 3:        System.out.println("恭喜你,你赢了!");
  111.                         winCount++;
  112.                         break;
  113.                 }
  114.         }        
  115.                 break;
  116.         case 3:        //计算机出布
  117.         {
  118.                 switch(player)
  119.                 {
  120.                 case 1: System.out.println("恭喜你,你赢了!");
  121.                         winCount++;
  122.                         break;
  123.                 case 2:        System.out.println("很抱歉,你输了!");
  124.                         loseCount++;
  125.                         break;
  126.                 case 3:        System.out.println("不好不坏,平了!");
  127.                         eqCount++;
  128.                         break;
  129.                 }
  130.         }
  131.                 break;
  132.         }
  133.         System.out.println("你继续游戏吗?[y/n]");
  134.         isContinue=input.next().charAt(0);   //input.next()输入一个字符串,input.next().charAt(0)在输入的字符串基础上定位第一个字符。
  135.         }while(isContinue=='y'||isContinue=='y');
  136.         int sum=winCount+loseCount+eqCount;
  137.         System.out.println("你总共玩了"+sum+"局游戏,其中赢了"+winCount+"次,输了"+loseCount+"次,平了"+eqCount+"次。");
  138.         System.out.println("GameOver!");
  139.         }
  140. }
复制代码
大家给分析下,有什么不好的地方指正下,谢谢了!

评分

参与人数 1黑马币 +15 收起 理由
张熙韬 + 15

查看全部评分

1 个回复

倒序浏览
第21行的代码用int接受容易出现异常  我一般都是用String来接收然后判断是否符合条件

还有就是判断,我想了一下,可不可以这样
假设:
石头=1,剪子=2,布=3。
玩家的值=x;
电脑的值=y;
int temp = x-y;
if(temp>0){
System.out.println("你输了");
}else if(temp<0){
System.out.println("你赢了");
}else{
System.out.println("平局");
}

临时想的 你试试能不能用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马