基于Java语言双色球摇奖过程的模拟实现

作者 | 顾北
对这个世界充满向往的理想主义者

基于JAVA语言编写,模拟实现双色球摇奖器摇奖过程,产生的有效号码与用户输入的有效号码对比,输出用户的中奖情况。

用户首先输入自己购买的双色球号码(其中6个红色球号码,1个蓝色球号码。红色球号码范围在1-33,蓝色球号码1-16)。

接下来程序模拟双色球摇奖器,随机产生一组有效号码,逐个打印出来。

摇奖器产生的号码与用户购买的号码进行对比,判断用户中奖情况。

  • 一等奖:7个号码相符(6个红色球号码和1个蓝色球号码)(红色球号码顺序不限,下同)
  • 二等奖:6个红色球号码相符;
  • 三等奖:5个红色球号码和1个蓝色球号码相符;
  • 四等奖:5个红色球号码,或4个红色球号码和1个蓝色球号码相符;
  • 五等奖:4个红色球号码,或3个红色球号码和1个蓝色球号码相符;
  • 六等奖:1个蓝色球号码相符(有无红色球号码相符均可)。
public class DoubleChromosphere {
    //定义红色球的集合
    static ArrayList<Integer> redbox = new ArrayList<Integer>();
    //定义蓝色球
    static int bluebox;
    //定义箱子
    static ArrayList<Integer> box = new ArrayList<Integer>();
    //把红球都放到箱子里
    static ArrayList<Integer> useredbox = new ArrayList<Integer>();
    static int usebluebox;
    //定义 红球匹配的个数
    static int reddui = 0;
    static int bluedui = 0;
    public static void kai() {
        System.out.println("开奖了");
        for (int i = 1; i <= 33; i++) {
            box.add(i);
        }
        Random r = new Random();
        //红球
        System.out.print("红球");
        for (int i = 1; i <= 6; i++) {
            //根据索引找到球
            int x = r.nextInt(box.size());
            int redbox1 = box.get(x);
            //删除已经拿出来的球
            box.remove(x);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.print(redbox1 + " ");
            redbox.add(redbox1);
        }
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.print("蓝球");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        bluebox = r.nextInt(16) + 1;
        System.out.println(bluebox);
    }
    public static void main(String[] args) {
        System.out.println("欢迎来来到中国福利彩票双色球,请量力而行,理性购彩");
        Scanner sc = new Scanner(System.in);
        List<Integer> list = new ArrayList<>();
        for (int i = 1; i <= 6; i++) {
            System.out.println("请输入您要购买第" + i + "红色球的号码,范围是1到33,且不可重复购买一个号码");
                int useredbox1 = sc.nextInt();
                if (useredbox1 < 1 || useredbox1 > 33) {
                    System.out.println("您输入的数字有误,请重新输入");
                    i=0;
                } else {
                    boolean result = list.contains(useredbox1);
                    useredbox.add(useredbox1);
                    if(result){
                        System.out.println("您输入有误,请重新输入.请别输入重复的数字.");
                        i -- ;
                    }else{
                        list.add(useredbox1);
                    }
                }
        }
        System.out.println("请输入您要购买的蓝球的号码,范围在1到16");
        usebluebox = sc.nextInt();
        //判断是否有相同元素

        System.out.println("您现在选好的红球是" + useredbox + "蓝球是" + usebluebox);
        System.out.println("请耐心等待10秒,十秒之后将揭晓结果");
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        kai();
        //遍历用户  红色相同的个数 调用retainAll方法
        useredbox.retainAll(redbox);
        reddui = useredbox.size();
        if (usebluebox == bluebox) {
            bluedui++;
        }
        if (reddui == 6 && bluedui == 1) {
            System.out.println("恭喜你获得一等奖,奖金1000万元");
        } else if (reddui == 6 && bluedui == 0) {
            System.out.println("恭喜你获得二等奖,奖金500万元");
        } else if (reddui == 5 && bluedui == 1) {
            System.out.println("恭喜你获得三等奖,奖金1万元");
        } else if (reddui == 5 && bluedui == 0 || reddui == 4 && bluedui == 1) {
            System.out.println("恭喜你获得四等奖,奖金3000元");
        } else if (reddui == 4 && bluedui == 0 || reddui == 3 && bluedui == 1) {
            System.out.println("恭喜你获得五等奖,奖金100元");
        } else if (reddui == 2 && bluedui == 1 || reddui == 1 && bluedui == 1 || reddui == 0 && bluedui == 1) {
            System.out.println("恭喜你获得六等奖,奖金5元");
        } else {
            System.out.println("希望您下次中奖,欢迎下次购买");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值