【Java】双色球的模拟实现

投注号码由6个红球号码和一个蓝球号码组成,
红球号码从1-33中选(红球号码不能重复),
篮球从1-16号中选择。
package com.itheima.test;

import java.util.Random;
import java.util.Scanner;

public class Test7 {
    //模拟双色球
    /*
    投注号码由6个红球号码和一个蓝球号码组成,
    红球号码从1-33中选(红球号码不能重复),
    篮球从1-16号中选择。
     */
    public static void main(String[] args) {
        //1.随机生成号码
        int[] luckNumbers=createluckNumbers();
        //2.输入号码
        int[] userNumbers=userInputNumbers();
        //3.判断中奖情况
        judge(luckNumbers,userNumbers);
    }

    //1.随机一组中奖号码返回
    public static int[] createluckNumbers(){
        Random r=new Random();

        //a.定义一个动态数组,存储7个数字
        int[] arr=new int[7];
        //b.遍历数组,为每个位置生成对应的号码。
        for (int i = 0; i < 6; i++) {
            //c.判断是否重复,如果重复,则重新随机一个,直到不重复。
            while(true) {
                int data=r.nextInt(33)+1;
                int flag=1;
                for (int j = 0; j < i; j++) {
                    if (data == arr[i]) {
                        //当重复时
                        flag=0;
                        break;
                    }
                }
                if(flag==1) {
                    //没有重复
                    arr[i]=data;
                    break;
                }
            }
        }
        //d.为第七个位置生成1-16的号码
        arr[6]=r.nextInt(16)+1;
        return arr;
    }

    //2.用户输入一组双色球号码返回
    public static int[] userInputNumbers(){
        Scanner sc=new Scanner(System.in);
        //a.定义一个动态数组,存储7个数字
        int arr[]=new int[7];
        //b.让用户录入六个红色小球
        for (int i = 0; i < 6; i++) {
            System.out.println("请您输入第" + (i + 1) + "个红球号码(1-33,要求不重复)");
            int data= sc.nextInt();
            //c.将数据存入数组
            arr[i]=data;
        }
        //d.让用户录入一个蓝色小球
        System.out.println("请您输入篮球号码(1-16)");
        arr[6]=sc.nextInt();
        return  arr;
    }

    //3.传入2组号码,判断用户是否中奖
    public static void judge(int[] luckNumbers,int[] userNumbers){
        //1,定义两个变量存储命中的球的个数
        int readHitNumbers=0;
        int blueHitNumbers=0;

        //2.判断红球命中了几个
        for (int i = 0; i < userNumbers.length-1; i++) {
            for (int i1 = 0; i1 < luckNumbers.length-1; i1++) {
                if(userNumbers[i]==luckNumbers[i1]) {
                    readHitNumbers++;
                    break;
                }
            }
        }

        //3.判断蓝球号码是否命中
        blueHitNumbers=luckNumbers[6]==userNumbers[6]?1:0;

        System.out.print("中奖号码是:");
        printArray(luckNumbers);
        System.out.print("您投注的号码是:");
        printArray(luckNumbers);
        System.out.println("您命中了几个红球:" + readHitNumbers);
        System.out.println("您是否命中了篮球:" + (blueHitNumbers == 1 ? "是" : "否"));

        //4.判断中奖情况
        if(blueHitNumbers==1&&readHitNumbers<3)
            System.out.println("恭喜你,中了5元小奖!");
        else if (readHitNumbers==3&&blueHitNumbers==1||blueHitNumbers==0&&readHitNumbers==4)
            System.out.println("恭喜你,中了10元小奖!");
        else if (readHitNumbers==4&&blueHitNumbers==1||readHitNumbers==5&&blueHitNumbers==0)
            System.out.println("恭喜你,中了200元!");
        else if (blueHitNumbers==1&&readHitNumbers==5)
            System.out.println("恭喜你,中了3000元大奖!");
        else if (readHitNumbers==6&&blueHitNumbers==0)
            System.out.println("恭喜你,中了500万元超级大奖!");
        else if (readHitNumbers==6&&blueHitNumbers==1)
            System.out.println("恭喜你,中了1000万元巨奖!可以开始享受人生");
        else
            System.out.println("感谢您对福利事业做出的突出贡献!!");
    }

    //输出数组
    public static void printArray(int[] arr){
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i==arr.length-1?arr[i]:arr[i]+",");
        }
        System.out.println("]");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值