十一选五中奖等级计算 - 点滴记忆*记忆点滴
收藏本站

十一选五中奖等级计算

十一选五 根据开奖号及兑奖号进行中奖等级计算

方案比较多,包含任选,直选,组选,所以实现起来也比较麻烦。

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * 11选5
 * @author TJX
 * @since 2010.4.28
 */
public class ElevenFiveBonusCalc  {
    /**开奖号位数 --5*/
       public static final int AWARDCODE_SIZE = 5;
       
   /**任选1*/
   public static final int RANDOM_1 = 1;
   /**任选2*/
   public static final int RANDOM_2 = 2;
   /**任选3*/
   public static final int RANDOM_3 = 3;
   /**任选4*/
   public static final int RANDOM_4 = 4;
   /**任选5*/
   public static final int RANDOM_5 = 5;
   /**任选6*/
   public static final int RANDOM_6 = 6;
   /**任选7*/
   public static final int RANDOM_7 = 7;
   /**任选8*/
   public static final int RANDOM_8 = 8;
   /**直选2*/
   public static final int ZHIXUAN_2 = 9;
   /**直选3*/
   public static final int ZHIXUAN_3 = 10;
   /**组选2*/
   public static final int ZUXUAN_2 = 11;
   /**组选3*/
   public static final int ZUXUAN_3 = 12;
    
    /**未中奖*/
    public static final int NO_PRIZE_LEVEL = -1;
    /**中奖*/
    public static final int IS_BINGO = 0;
    
   /**
    * 获得相应玩法的奖金
    */
   public static BigDecimal haveBonus(int type) {
      switch(type) {
      case RANDOM_1:
         return new BigDecimal(13);
      case RANDOM_2 :
         return new BigDecimal(6);
      case RANDOM_3 :
         return new BigDecimal(19);
      case RANDOM_4 :
         return new BigDecimal(78);
      case RANDOM_5 :
         return new BigDecimal(540);
      case RANDOM_6 :
         return new BigDecimal(90);
      case RANDOM_7 :
         return new BigDecimal(26);
      case RANDOM_8 :
         return new BigDecimal(9);
      case ZHIXUAN_2 :
         return new BigDecimal(130);
      case ZHIXUAN_3 :
         return new BigDecimal(1170);
      case ZUXUAN_2 :
         return new BigDecimal(65);
      case ZUXUAN_3 :
         return new BigDecimal(195);
      }

      return new BigDecimal(0);
   }

   public static int haveRank(int playType, String lotCode, String awardCode) {
      //投注号码倒过来,与开奖号码一致
      String[] lot = lotCode.split(",");
      StringBuffer sb = new StringBuffer();
      sb.append(lot[lot.length-1]);
      for(int i = lot.length-2;i>=0;i--)
      {
          sb.append(","+lot[i]);
      }
      String newlotCode = sb.toString();
      
      switch(playType) {
      case RANDOM_1:
      case RANDOM_2 :
      case RANDOM_3 :
      case RANDOM_4 :
      case RANDOM_5 :
      case RANDOM_6 :
      case RANDOM_7 :
      case RANDOM_8 :
          return randomX(playType,newlotCode, awardCode);
      case ZHIXUAN_2 :
      case ZHIXUAN_3 :
          return zhixuan(playType,newlotCode, awardCode);
      case ZUXUAN_2 :
      case ZUXUAN_3 :
          return zuxuan(playType,newlotCode, awardCode);
      }

      return NO_PRIZE_LEVEL;
   }
public static void main(String[] args) {
System.out.println("任选一"+
        ElevenFiveBonusCalc.haveRank(1, "7", "5,9,7,2,6"));    
System.out.println("任选二"+ElevenFiveBonusCalc.haveRank(2, "7,6", "5,9,7,2,6"));    
System.out.println("任选三"+ElevenFiveBonusCalc.haveRank(3, "7,6,2", "5,9,7,2,6"));    
System.out.println("任选四"+ElevenFiveBonusCalc.haveRank(4, "7,6,5,9", "5,9,7,2,6"));    
System.out.println("任选五"+ElevenFiveBonusCalc.haveRank(5, "7,5,2,6,9", "5,9,7,2,6"));    
System.out.println("任选六"+ElevenFiveBonusCalc.haveRank(6, "7,6,2,5,8,9", "5,9,7,2,6"));    
System.out.println("任选七"+ElevenFiveBonusCalc.haveRank(7, "7,6,2,5,8,9,4", "5,9,7,2,6"));    
System.out.println("任选八"+ElevenFiveBonusCalc.haveRank(8, "7,6,2,5,8,9,4,1", "5,9,7,2,6"));    
System.out.println("直选二"+ElevenFiveBonusCalc.haveRank(9, "9,5", "5,9,7,2,6"));
System.out.println("直选三"+ElevenFiveBonusCalc.haveRank(10, "7,9,5", "5,9,7,2,6"));    
System.out.println("组选二"+ElevenFiveBonusCalc.haveRank(11, "9,5", "5,9,7,2,6"));    
System.out.println("组选三"+ElevenFiveBonusCalc.haveRank(12, "7,5,9", "5,9,7,2,6"));    
}
 
   /**
    * 任选
    * @return -1:未中奖; 1-8:中奖
    */
   private static int randomX(int x, String userCode, String awardCode) {
          if(userCode == null || awardCode == null) {
             return NO_PRIZE_LEVEL;
          }

          String[] uCodes = userCode.split(",");
          String[] aCodes = awardCode.split(",");

          if(uCodes.length == x && aCodes.length == AWARDCODE_SIZE) {
              List<String> aList = copyStringToList(aCodes);
              String[] tmpCodes = uCodes;
             if(x>AWARDCODE_SIZE){
                  aList = copyStringToList(uCodes);
                  tmpCodes = aCodes;
             }
              
             for(int i = 0; i < tmpCodes.length; i++) {
                if(!aList.contains(tmpCodes[i])) {
                   return NO_PRIZE_LEVEL;
                }

                aList.remove(tmpCodes[i]);
             }
             
             return x;
          }

          return NO_PRIZE_LEVEL;
       }
   
   /**
    * 直选
    * @param userCode
    * @param awardCode
    * @return int -1:未中奖; 9:中奖
    */
   private static int zhixuan(int x,String userCode, String awardCode) {
          if(userCode == null || awardCode == null) {
             return NO_PRIZE_LEVEL;
          }
          int size = -1;
          if(x == ZHIXUAN_2){
              size = 2;
          }else if(x == ZHIXUAN_3){
              size = 3;
          }
              
          String[] uCodes = userCode.split(",");
          String[] aCodes = awardCode.split(",");

          if(uCodes.length == size && aCodes.length == AWARDCODE_SIZE) {
              
             for(int i = 0; i < uCodes.length; i++) {
                if(!aCodes[i].trim().equals(uCodes[i].trim())) {
                   return NO_PRIZE_LEVEL;
                }
             }
             return x;
          }
          return NO_PRIZE_LEVEL;
       }
   
 
   /**
    * 组选
    * @parm x 组选方式
    * @param userCode
    * @param awardCode
    * @return int -1:未中奖; 11:中奖
    */
   private static int zuxuan(int x,String userCode, String awardCode) {
          if(userCode == null || awardCode == null) {
             return NO_PRIZE_LEVEL;
          }
          
          int size = -1;
          if(x == ZUXUAN_2){
              size = 2;
          }else if(x == ZUXUAN_3){
              size = 3;
          }
          
          String[] uCodes = userCode.split(",");
          String[] aCodes = awardCode.split(",");

          if(uCodes.length == size && aCodes.length == AWARDCODE_SIZE) {
             List<String> aList = copyStringToList(uCodes);

             for(int i = 0; i < size; i++) {
                if(!aList.contains(aCodes[i])) {
                   return NO_PRIZE_LEVEL;
                }
                aList.remove(aCodes[i]);
             }
             
             return x;
          }

          return NO_PRIZE_LEVEL;
       }
   
   public static List<String> copyStringToList(String[] strs) {
      if(strs != null) {
         List<String> list = new ArrayList<String>();

         for(int i = 0; i < strs.length; i++) {
            list.add(strs[i]);
         }

         return list;
      }

      return null;
   }

   /**
    * 默认玩法 任选3
    */
   public int haveRank(String userCodes, String awardCodes) {
      return haveRank(RANDOM_3, userCodes, awardCodes);
   }
}

    留下足迹