十一选五中奖等级计算
十一选五 根据开奖号及兑奖号进行中奖等级计算
方案比较多,包含任选,直选,组选,所以实现起来也比较麻烦。
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); } }