Java双色球练习题

双色球规则图

在这里插入图片描述

  1. 系统随机在1-33中生成6个红球
  2. 系统随机在1-16中生成1个蓝球
  3. 用户输入的6红球数值和蓝球数值

分析

1.系统随机生成的红球数值不能重复
2.蓝球在最后一位
3.统计红球命中个数以及蓝球是否命中

代码实现

系统随机生成6个红球和一个蓝球:

 //系统生成双色球
    private static int[] luckNum(Random rd) {
        //声明数组用来接收随机生成的红球
        int[] luckArr = new int[7];
        //判断数组里面是否存在重复的
        for (int i = 0; i < luckArr.length-1; i++) {
            int rand = rd.nextInt(33)+1;
            if (!isext(luckArr,rand)){
                luckArr[i] = rand;
            }
        }
        //随机生成蓝球
        int blue = rd.nextInt(16)+1;
        luckArr[6] = blue;
        return luckArr;
    }

对random循环6次相当于在luckArr里面存入6个红球,然后判断(isext)随机生成的值是否以及存在luckArr里面,如果没有就将生成的红球数值放入luckArr,最后在数组的最后以为放入随机生成的蓝球。

用户输入双色球代码实现:

private static int[] userLuck(Scanner sc) {

        int[] userArr = new int[7];
        for (int i = 0; i < userArr.length - 1; i++) {
            System.out.println("请输入第"+(i+1)+"个红球");
            int redsNum = sc.nextInt();
            userArr[i] = redsNum;
        }
        System.out.println("请输入蓝球");
        int blueNum = sc.nextInt();
        userArr[6] = blueNum;
        return userArr;
    }

同理在数组的前6个位置我们放红球,在最后一个位置放蓝球。

统计判断命中数以及中奖情况代码实现:

private static void isLuck(int[] xitongLuck, int[] yonghuLuck) {

        //获取系统产生的红球
        int[] luckReds = new int[6];
        for (int i = 0; i < luckReds.length-1; i++) {
            luckReds[i] = xitongLuck[i];
        }
        //获取系统产生的蓝球
        int luckBlue = xitongLuck[6];
        //获取用户的红球
        int[] userLuck = new int[6];
        for (int j = 0; j < userLuck.length-1; j++) {
            userLuck[j] = yonghuLuck[j];
        }
        //获取用户的蓝球
        int userBlue = yonghuLuck[6];

        //判断命中数
        int count = 0;
        for (int i = 0; i < userLuck.length-1; i++) {
            for (int j = 0; j < luckReds.length-1; j++) {
                if (userLuck[i] == luckReds[j]){
                    count ++;
                }
            }
        }
        System.out.println("用户命中了" + count + "个红色球");
        System.out.println("用户" + (userBlue == luckBlue ? "命中了" : "没有命中") + "蓝色球");

        //如果中奖的话就进行奖项的输出
        if (count == 6 && userBlue == luckBlue) {
            System.out.println("恭喜,中了一等奖,奖金一千万");
        } else if (count == 6) {
            System.out.println("恭喜,中了二等奖,奖金五百万");
        } else if (count == 5 && userBlue == luckBlue) {
            System.out.println("恭喜,中了三等奖,奖金三千元");
        } else if (count ==5 || count == 4 && userBlue == luckBlue) {
            System.out.println("恭喜,中了四等奖,奖金两百元");
        } else if (count == 4 || count == 3 && userBlue == luckBlue) {
            System.out.println("恭喜,中了五等讲,奖金10元");
        } else if (userBlue == luckBlue) {
            System.out.println("恭喜,中了六等奖,奖金5元");
        } else {
            System.out.println("很遗憾,你并未中奖");
        }
    }

首先分别取出系统产生的红球和用户输入的蓝球(当然这里也可以直接循环原来的数组不需要取出红球),统计用户输入的红球和系统产生的红球相同的个数,在判断蓝球是否相同,最后输出获奖情况就可以了。

完整代码

public static void main(String[] args) {
        //定义随机生成的双色求
        Random rd = new Random();
        int[] xitongLuck = luckNum(rd);
        //用户输入自己的双色球号码
        Scanner sc = new Scanner(System.in);
        int[] yonghuLuck = userLuck(sc);
        //判断中奖情况
        isLuck(xitongLuck,yonghuLuck);
        printArr(xitongLuck);
        printArr(yonghuLuck);
    }

    private static void isLuck(int[] xitongLuck, int[] yonghuLuck) {

        //获取系统产生的红球
        int[] luckReds = new int[6];
        for (int i = 0; i < luckReds.length-1; i++) {
            luckReds[i] = xitongLuck[i];
        }
        //获取系统产生的蓝球
        int luckBlue = xitongLuck[6];
        //获取用户的红球
        int[] userLuck = new int[6];
        for (int j = 0; j < userLuck.length-1; j++) {
            userLuck[j] = yonghuLuck[j];
        }
        //获取用户的蓝球
        int userBlue = yonghuLuck[6];

        //判断命中数
        int count = 0;
        for (int i = 0; i < userLuck.length-1; i++) {
            for (int j = 0; j < luckReds.length-1; j++) {
                if (userLuck[i] == luckReds[j]){
                    count ++;
                }
            }
        }
        System.out.println("用户命中了" + count + "个红色球");
        System.out.println("用户" + (userBlue == luckBlue ? "命中了" : "没有命中") + "蓝色球");

        //如果中奖的话就进行奖项的输出
        if (count == 6 && userBlue == luckBlue) {
            System.out.println("恭喜,中了一等奖,奖金一千万");
        } else if (count == 6) {
            System.out.println("恭喜,中了二等奖,奖金五百万");
        } else if (count == 5 && userBlue == luckBlue) {
            System.out.println("恭喜,中了三等奖,奖金三千元");
        } else if (count ==5 || count == 4 && userBlue == luckBlue) {
            System.out.println("恭喜,中了四等奖,奖金两百元");
        } else if (count == 4 || count == 3 && userBlue == luckBlue) {
            System.out.println("恭喜,中了五等讲,奖金10元");
        } else if (userBlue == luckBlue) {
            System.out.println("恭喜,中了六等奖,奖金5元");
        } else {
            System.out.println("很遗憾,你并未中奖");
        }
    }

    //判断用户输入的是否和系统产生的一致
//用户输入双色球
    private static int[] userLuck(Scanner sc) {

        int[] userArr = new int[7];
        for (int i = 0; i < userArr.length - 1; i++) {
            System.out.println("请输入第"+(i+1)+"个红球");
            int redsNum = sc.nextInt();
            userArr[i] = redsNum;
        }
        System.out.println("请输入蓝球");
        int blueNum = sc.nextInt();
        userArr[6] = blueNum;
        return userArr;
    }


    //系统生成双色球
    private static int[] luckNum(Random rd) {
        //声明数组用来接收随机生成的红球
        int[] luckArr = new int[7];
        //判断数组里面是否存在重复的
        for (int i = 0; i < luckArr.length-1; i++) {
            int rand = rd.nextInt(33)+1;
            if (!isext(luckArr,rand)){
                luckArr[i] = rand;
            }
        }
        //随机生成蓝球
        int blue = rd.nextInt(13)+1;
        luckArr[6] = blue;
        return luckArr;
    }

    public static boolean isext(int[] arr, int num){
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == num){
                return true;
            }
        }
        return false;
    }
    public static void printArr(int[] arr) {
        String printStr = "[";
        for (int i = 0; i < arr.length; i++) {
            //判断是不是最后一个,最后不需要,
            if (i == arr.length - 1) {
                printStr += arr[i];
            } else {
                printStr += arr[i] + ",";
            }
        }
        printStr += "]";
        System.out.println(printStr);
    }

模拟双色球获奖情况到这里就结束了希望对学习Java的各位有所帮助,同时欢迎评论修改共同学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值