综合案例:双色球

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

public class Lottery {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("=========================");
        System.out.println("======欢迎使用双色球======");
        System.out.println("=========================");
        boolean loop = true; //定义循环的初始变量
        boolean sing = false; //定义开奖初始变量
        boolean count = true; //定义查看购买号码的初始化变量
        boolean pool =true; //定义查看中奖的结果初始变量
        //int myblue =0;  //定义一个初始化变量蓝球
        int blu = 0;    //定义一个用户输入蓝色球号码的初始化变量,不需要赋值给myblue,简写上面的一步
        int sysBule = 0;    //定义一个系统产生随机数的蓝色球号码的初始化变量
        int bei = 0;        //定义一个买彩票倍数的初始化变量
        int[] sys = new int[6]; //定一个系统产生随机数的数组长度为6
        int[] my = new int[6]; //定义一个用户输入的数组长度为6
        while (loop){
            System.out.println("1.购买号码");
            System.out.println("2.查看购买号码");
            System.out.println("3.开奖");
            System.out.println("4.查看开奖结果");
            System.out.println("5.退出系统");
            int num = scanner.nextInt();  //用户选择输入的编号
            switch (num){
                case 1:
                    //每一次购买之前清空数组内容
                    Arrays.fill(my,0); //使用Arrays填充方法进行赋值
                    blu=0;
                    //输入红球
                    for (int i = 0; i <6 ; i++) {   //定义红球的数量为6个
                        boolean flag =true; //定义红色球号码的初始变量
                        System.out.println("请输入第"+(i+1)+"个红球的球(范围1~33)");
                        int red = scanner.nextInt();  //用户输入的红色球
                        if (red>=1 && red<=33){    //判断用户输入的红色球的范围
                            for (int j = 0; j < 6; j++) {
                                if (my[j] == red) {  //判断输入号码和数组中的号码是否相同
                                    System.out.println("输入的号码重复");
                                    flag = false;  //判断是否重复数字,false表示有重复的数字
                                    i--;           //用户输入的数字重复,就重新返回上一个号码重新输入
                                    break;         //停止跳出内部的for循环
                                }
                            }
                                if (flag==true){     //true表示没有重复的号码
                                    my[i] =red;     //将用户输入红色的球赋值给给用户输入的数组
                                }
                        }else{
                        System.out.println("输入号码超出范围");
                            i--;  //用户如果输入的球不在这个范围,就重新返回上一个号重新输入
                        }
                    }
                    //输入蓝球
                    while (true){  //定义一个蓝色球的死循环
                        System.out.println("请输入蓝球的号码(范围为0~16)");
                        blu = scanner.nextInt();   //用户输入的蓝色球
                        if (blu>=0 && blu<=16){   //判断蓝球号码输入的范围在1~16
                            //myblue = blue;  //用户输入蓝球的数赋值给myblue
                            break;          //跳出while这个循环
                        }else {
                            System.out.println("你输入的号码错误");
                        }
                    }
                    System.out.println("请输入购买的倍数:");
                    bei = scanner.nextInt();      //用户输入购买的倍数赋值给变量bei
                    System.out.println("购买成功,请支付"+(bei*2)+"元");  //用户输出倍数乘以2
                    System.out.println("红色球为:"+Arrays.toString(my)+"蓝色球为"+blu); //快速遍历数组
                    sing = true;   //开奖的次数为空,不能进行开奖
                    count = true;  //购买的号码,是可以查询的
                    pool = true;  //购买了号码,是可以查询的
                    break;  //跳出while循环
                case 2:
                    if (count==false){   //判断是否购买号码了,没有是不可以直接查询
                        Arrays.sort(my);    //把购买的号码进行排序
                        System.out.println("购买的红球为:"+Arrays.toString(my)+"购买的蓝球为:"+blu); //快速遍历红球数组进行排序
                    }else {
                        System.out.println("请先购买彩票");
                    }
                    break; //跳出最层while循环
                case 3:
                    if (sing==true){
                        //开奖功能实现
                        Random random = new Random(); //创建一个随机数对象
                        for (int i = 0; i <6 ; i++) {
                            boolean flag = true;    //定义一个随机数变量的初始值
                            int red = random.nextInt(33)+1; //产生随机数范围为1~33
                            for (int j:sys) {   //遍历产生随机数数组
                                if (j==red){    //判断遍历出来的红色球号码是否和输入红色球号码数字相等
                                    flag = false;   //判断是否重复,false表示重复的数字号码
                                    i--;    //如果重复,就继续输入上一次的号码进行输出
                                    break;  //跳出产生随机数的循环数组
                                }
                            }

                            if (flag==true){    //判断随机数变量为true,没有重复的号码
                                sys[i] = red;   //将用户输入红色的球赋值给随机产生的数组
                            }
                        }
                        sysBule = random.nextInt(16)+1; //输出产生蓝色球随机数的范围为1~16
                        Arrays.sort(sys); //快速排序
                        System.out.println("系统红色球开奖为:"+Arrays.toString(sys)+"蓝色球开奖为:"+sysBule); //快速遍历数组
                    }else {
                        System.out.println("请先购买彩票");
                    }
                    sing = false;   //开奖次数不为空,可以开奖

                    break;  //跳出最外面的while循环
                case 4:
                    if (pool=false){
                        //查看购买的红球和系统开出的红球做对比
                        int redCount=0; //定义一个红色球号码的计数变量
                        for (int s1:my){    //用户输入遍历后红色球的号码
                            for (int s2:sys){   //系统遍历后随机产生的红色号码
                                if (s1==s2){    //用户输入和系统随机产生的号码做比较
                                    redCount++;     //红球的次数+1
                                }
                            }
                        }
                        //查看购买的蓝球和系统开出的蓝色球做对比
                        int blueCount=0; //定义一个蓝色球号码的计数变量
                        if(blu==sysBule){   //判断用户输入的蓝球和系统随机产生蓝色球号码做比较
                            blueCount=1;    //蓝色球次数为1
                        }
                        System.out.println("中奖的红色球为:"+redCount+"中奖的蓝色球为:"+blueCount);

                        if (redCount==6 && blueCount==1){
                            System.out.println("奖金为"+(500*bei)+"万");
                        }else if(redCount==6){
                            System.out.println("奖金为"+(5*bei)+"万");
                        }else if (redCount==4 && blueCount==1){
                            System.out.println("奖金为"+(3000*2)+"元");
                        }else if (redCount==5 || (redCount==4 && blueCount==1)){
                            System.out.println("奖金为"+(200*bei)+"元");
                        }else if (redCount==4 || (redCount==3 && blueCount==1)){
                            System.out.println("奖金为"+(10*bei)+"元");
                        }else if (blueCount==1){
                            System.out.println("奖金为"+(5*bei)+"元");
                        }else {
                            System.out.println("很遗憾没有中奖!");
                        }
                    }else {
                        System.out.println("请先购买彩票");
                    }

                    break;
                case 5:
                    loop=false; //
                    System.out.println("退出成功~");
                    break;
                default:
                    System.out.println("请输入正确的编号");
            }
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸叫我照顾大海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值