java实现24点编程

从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式

先定义四张牌

static int a,b,c,d;  

生成随机数函数

public static void create() {

              a=(int)(Math.random()*13+1);

              System.out.println("第一张牌为"+a);

              b=(int)(Math.random()*13+1);

              System.out.println("第二张牌为"+b);

              c=(int)(Math.random()*13+1);

              System.out.println("第三张牌为"+c);

              d=(int)(Math.random()*13+1);

              System.out.println("第四张牌为"+d);       //生成4个随机数    

       }

四则运算函数

 public static int szys(int j,int k,String l) {
   if(l=="+") 
    return (j+k);
   else if(l=="-") 
    return (j-k);
   else if(l=="*") 
    return (j*k);
   else 
    return (j/k);
  }

计算函数

public static void jisuan() {
  int t=0;         //判断能否实现24点
  int[] sj=new int[4];//定义存放数据的数组
  sj[0]=a;
  sj[1]=b;
  sj[2]=c;
  sj[3]=d;           //存放数据   
  String ysf[]= {"+","-","*","/"};  //存放运算符
  int result1=0,result2=0,result3=0;             //存放结果
  for(int m=0;m<4;m++)  //计算第一个数
  {                                                    
   for(int n=0;n<4;n++) //计算第二个数
   {                                                
    if(m!=n) //防止数据重复
    {                                                        
     for(int x=0;x<4;x++) //第一个运算符
     {                                        
      result1=szys(sj[m],sj[n],ysf[x]);                  //存放第一个结果
      for(int p=0;p<4;p++) //计算第三个数
      {                                    
       if(p!=m&&p!=n)  //防止数据重复
       {                                     
           for(int y=0;y<4;y++) //第二个运算符
           {                            
        result2=szys(result1,sj[p],ysf[y]);        //存放第二个结果
        for(int q=0;q<4;q++) //计算第四个数
        {                                    
         if(q!=m&&q!=n&&q!=p)  //防止数据重复
         {                                     
             for(int z=0;z<4;z++) //第三个运算符
             {                            
          result3=szys(result2,sj[q],ysf[z]); //存放第三个结果
          if(result3==24)
          {
           System.out.println("("+"("+"("+sj[m]+ysf[x]+sj[n]+")"+ysf[y]+sj[p]+")"+ysf[z]+sj[q]+")");
           t=1;
          }
          
             }
         }
        }
           }
       }
      }
     }
    }
   }
  }
  if(t==0)
   System.out.println("不能实现24点!");
 }

主函数

public static void main(String[] args){
   create();
   System.out.println("表达式如下:");
   jisuan();
 }
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值