双色球系统java实现**双色球的中奖匹配
规则:
1、一注双色球由7个球组成,6个红球,1个蓝球
2、红球的范围: [1, 33], 蓝球的范围: [1, 16]
3、红球不允许重复
4、一注双色球中,红球需要是升序排序的
有两种选择方式,一是自己选择双色球号码,另一种是机器自动生成双色球号码。
-
输入一个自己选择的双色球(6个红球,1个蓝球)
-
随机生成一注双色球(可用于机选号码与中奖号码的生成)
-
对比两注双色球,计算中奖金额
双色球中奖规则与奖金
下边是代码实现:
import java.util.Random; import java.util.Scanner; public class Ball { public static void main(String[] args) { Random random=new Random();//定义随机数生成 long date1=System.currentTimeMillis(); // int red[]=new int[]{1,7,31,26,17,11}; int red[]=createRandomArray();//随即生成一个红色球数组 // int blue=7; int blue=random.nextInt(16)+1; int redInput[]; int blueInput; System.out.println("请输入您的选择:"); System.out.println("1.自选号码 2.机选号码"); System.out.print("> "); Scanner scan=new Scanner(System.in); int chance=scan.nextInt(); switch (chance){ case 1: System.out.println("请输入您要选择的号码(红球[1,33]):"); System.out.print("> "); redInput=createRandomArray(); for(int i=0;i<6;i++) redInput[i]=scan.nextInt(); System.out.println("请输入您要选择的号码(蓝球[1,16]):"); System.out.print("> "); blueInput=scan.nextInt(); matching(red,redInput,blue,blueInput); break; case 2: //random.nextInt(num),产生的数范围是[0,num),因此加1即可得到[1,num+1) redInput=createRandomArray(); // for(int i=0;i<6;i++) // redInput[i]=random.nextInt(33)+1; blueInput=random.nextInt(16)+1; // printArray(redInput); // System.out.println("blue="+blueInput); matching(red,redInput,blue,blueInput); break; default: System.out.println("输入错误,请重新输入"); break; } long date2=System.currentTimeMillis(); // System.out.println("系统运行时间"+(date2-date1)+"ms"); } //生成随机数组. public static int[] createRandomArray(){ Random random=new Random(); int[] array=new int[6]; for(int i=0;i<6;i++) array[i]=random.nextInt(33)+1; return array; } //定义枚举类型,用来记录奖项的级别和奖金。 public enum reward{ 一等奖(1,10000000), 二等奖(2,5000000), 三等奖(3,3000), 四等奖(4,200), 五等奖(5,10), 六等奖(6,5), ; private int level; private int rewardingMoney; public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } public int getRewardingMoney() { return rewardingMoney; } public void setRewardingMoney(int rewardingMoney) { this.rewardingMoney = rewardingMoney; } reward(int i, int i1) { this.level=i; this.rewardingMoney=i1; } }; //打印数组 public static void printArray(int[] array){ for(int i:array) System.out.print(i+" "); System.out.println(); } //交换数值 public static void swap(int[] a,int i,int j){ int temp; temp=a[j]; a[j]=a[i]; a[i]=temp; } //直接插入排序 public static void insertSort(int []a){ int j; for(int i=1;i<a.length;i++){ j=i; while(j>0 && a[j]<a[j-1]){ swap(a,j,j-1); j--; } } } //匹配算法实现一:先把两个数组合并,在排序,查找重复元素 public static int arrayMatching(int []red,int[] redInput){ int redCount=0; int []mergeArray=new int[red.length+redInput.length]; int i; for(i=0;i<red.length;i++) mergeArray[i]=red[i]; for(i=0;i<redInput.length;i++) mergeArray[i+red.length]=redInput[i]; insertSort(mergeArray); //看看数组中有多少重复的元素,即匹配数量有多少 for(int j=0;j<mergeArray.length-1;j++) if(mergeArray[j]==mergeArray[j+1]) redCount++; return redCount; } //匹配算法实现二:先排序,在用归并算法合并,查找重复元素。 //拼接字符串,将数组拼接成指定样式的字符串。 public static String jointArray(int []array){ String str=""; for(int i=0;i<array.length;i++){ if(array[i]/10==0) str+="0"+array[i]+","; else str+=array[i]+" "; } return str; } //中奖匹配 public static void matching(int[] red,int []redInput,int blue,int blueInput){ insertSort(red); insertSort(redInput); int redCount=0;//用来记录红色球匹配数量 int blueCount=0;//用来记录蓝色球是否匹配 String inputRed="您选择的号码是:红球:"; inputRed+=jointArray(redInput); inputRed+=" 蓝球:"+blueInput; System.out.println(inputRed); String str="中奖号码是:红球:"; str+=jointArray(red); str+=" 蓝球:"+blue+"\n"; //匹配算法实现 redCount=arrayMatching(red,redInput); // System.out.println(redCount); if(blue==blueInput) blueCount=1; //按照中奖规则,写了一大堆if else if(redCount==6&&blueCount==1) //str+=("恭喜您中了一等奖!奖金10000000元!"); str+=("恭喜您中了"+reward.一等奖+"!奖金"+reward.一等奖.getRewardingMoney()+"元!"); else if(redCount==6&&blueCount==0) str+="恭喜您中了"+reward.二等奖+"!奖金"+reward.二等奖.getRewardingMoney()+"元!"; else if(redCount==5&&blueCount==1) str+="恭喜您中了"+reward.三等奖+"!奖金"+reward.三等奖.getRewardingMoney()+"元!"; else if(redCount==5&&blueCount==0||redCount==4&&blueCount==1) str+="恭喜您中了"+reward.四等奖+"!奖金"+reward.四等奖.getRewardingMoney()+"元!"; else if(redCount==4&&blueCount==0||redCount==3&&blueCount==1) str+="恭喜您中了"+reward.五等奖+"!奖金"+reward.五等奖.getRewardingMoney()+"元!"; else if(redCount==2&&blueCount==1||redCount==1&&blueCount==1||redCount==0&&blueCount==1) str+="恭喜您中了"+reward.六等奖+"!奖金"+reward.六等奖.getRewardingMoney()+"元!"; else str+="谢谢惠顾!"; System.out.println(str); } }