首先建立双色球系统——业务分析、随机生成一组中奖号码

随机一组中奖号码的分析:
1.投注号码由6个红色号码和1个蓝色号码组成,红色号码从1-33,蓝色号码从1-16中选择(注意六个红球号码不能重复)

2.可以定义方法用于返回一组中奖号码(7个数据),返回的形式是一个整形数组

3.每次随机一次红球号码后去数组中判断是否存在

4.存在需要重新随机一个数字直到不重复为止

public static int[]createLuckNumber(){
        //a.定义一个动态初始化的数组,存储7个数字
        int[]number=new int[7];
        //b.遍历数组,为每个位置生成对应的代码(注意:遍历前六个位置,生成六个不重复的红球号码,范围是1-33)
        Random r= new Random();
        for (int i = 0; i < number.length-1; i++) {
            while (true) {
                int data = r.nextInt(33) + 1;
                //c.注意:必须判断当前随机的这个号码之前是否出现过,出现过要重新随机一个,直到不重复为止
                //定义一个flag变量,默认认为data没有重复
                boolean flag = true;
                for (int j = 0; j < i; j++) {
                    if (number[j] == data) {
                        //data数据之前出现过,不能用
                        flag = false;
                        break;
                        }
                    }
                    if (flag) {
                        //data之前没有出现过,可以存入
                        number[i] = data;
                        break;

                    }
                }
            }
    //d.为第七个位置生成一个1-16的号码作为蓝球号码
        number[number.length-1]=r.nextInt(16)+1;
        return number;

    }
//调用
    //随机6个红球号码(1-33,不能重复),随机一个蓝球号码(1-16),可以采用数组装起来作为中奖号码
            int[]luckNumber = createLuckNumber();
            printArray(luckNumber);

 

双色球系统用户输入一组双色球号码

用户输入一组双色球号码分析:

1.定义一个方法,该方法可以录入用户输入的6个红球和一个蓝球号码

2.该方法最终需要返回一个数组,数组中就是用户录入的号码(7位)。

public static int[] userInputNumbers(){
        //a.定义一个数组存储7个号码
        int []number=new int[7];
        //b.让用户录入6个红球号码
        Scanner sc =new Scanner(System.in);
        for (int i = 0; i < number.length-1; i++) {
            System.out.println("请您输入第"+(i+1)+"个红球(1-33不重复):");
                int data = sc.nextInt();
                //c.把当前录入的数据存入到数组当中去
            number[i]=data;
        }
        //d.单独录入一个蓝球号码
        System.out.println("请您输入蓝球号码(1-16):");
        number[6]=sc.nextInt();
        return number;
    }
//调用一个方法让用户输入7个号码作为用户选号
        int[]userNumber = userInputNumbers();
        printArray(userNumber);

双色球系统——判断中奖情况

中奖情况判断的分析:

定义一个方法,可以接收中奖号码的数组,用户选号的数组。

根据命中的红球数和蓝球数判断最终的中奖情况并输出详情和中奖金额。

public static void judge(int[]luckNumber,int[]userNumber) {
        //判断是否中奖了
        //luckNumber= [12,23,8,15,32,9]
        //userNumber=[13,12,5,23,11,7]
        //1.定义两个变量分别存储红球命中的个数,以及蓝球命中的个数
        int redHitNumbers = 0;
        int blueHitNumbers = 0;
        //2.判断红球命中了几个,开始统计
        for (int i = 0; i < userNumber.length - 1; i++) {
            for (int j = 0; j < luckNumber.length - 1; j++) {
                //每次找到了相等了,意味着当前号码命中了
                if (userNumber[i] == luckNumber[i]) {
                    redHitNumbers++;
                    break;

                }
            }
        }
        //蓝球号码是否命中了
        blueHitNumbers = luckNumber[6] == userNumber[6] ? 1 : 0;
        System.out.println("中奖号码是:"  );
        printArray(luckNumber);
        System.out.println("您投注的号码是:" );
        printArray(userNumber);
        System.out.println("您命中了几个红球:"+redHitNumbers);
        System.out.println("您是否命中了蓝球:"+(blueHitNumbers==1?"是":"否"));

        //判断中奖情况了
        if (blueHitNumbers == 1 && redHitNumbers < 3) {
            System.out.println("恭喜您中了10元小奖!");
        } else if (blueHitNumbers == 1 && redHitNumbers == 3
                || blueHitNumbers == 0 && redHitNumbers == 4) {
            System.out.println("恭喜您中了50元!");
        } else if (blueHitNumbers == 1 && redHitNumbers == 4
                || blueHitNumbers == 0 && redHitNumbers == 5) {
            System.out.println("恭喜您中了300元!");
        } else if (blueHitNumbers == 1 && redHitNumbers == 5) {
            System.out.println("恭喜您中了3000元!");
        } else if (blueHitNumbers == 0 && redHitNumbers == 6) {
            System.out.println("恭喜您中了500万超级大奖!");
        } else if (blueHitNumbers == 1 && redHitNumbers == 6) {
            System.out.println("恭喜您中了1000万巨奖!,您可以享受人生了");
        }else{
            System.out.println("一毛都没中,感谢您对彩票福利的大力支持!请继续消费^_^ ");
        }
    }
public static void printArray(int[]arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+"\t");
        }
        System.out.println();//换行
    }
//调用——判断中奖情况
        judge(luckNumber,userNumber);

java 排列组合 双色球 java集合模拟双色球_算法