Java双色球

该文章描述了一个Java程序,用于模拟双色球彩票的抽奖过程。程序包括生成随机中奖号码、用户输入投注号码以及判断中奖等级的功能。myNumber()方法处理用户输入,确保红球号码的合法性与唯一性,createNumber()方法生成不重复的红球和任意蓝球号码,level()方法计算匹配球数以确定中奖级别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1-33中选择﹔蓝色球号码从1-16中选择。

 

双色球抽奖:6个红球:1-33 1个蓝球 1-16
            一等奖      中6+1
            二等奖      中6+0
            三等奖      中5+1
            四等奖      中5+0
                             中4+1
            五等奖      中4+0
                             中3+1
                             中2+1
            六等奖      中1+1
                             中0+1

      本人思路:使用三个方法完成需求:

1.myNumber()方法,用来键盘输入自己的抽奖号码,并存入数组中

2.createNumber()方法,用来创建中奖号码数组,注:前六个号码为红球,范围:1-33,不能重复,第七个号码为蓝球,范围:1-16,可以和前六个号码重复

3.level()方法,用来对比红球和蓝球相等个数,从而判断中奖等级


public class Test{
    public static void main(String[] args) {
        /* 双色球抽奖:6个红球:1-33 1个蓝球 1-16
            一等奖      中6+1
            二等奖      中6+0
            三等奖      中5+1
            四等奖      中5+0
                        中4+1
            五等奖      中4+0
                        中3+1
                        中2+1
            六等奖      中1+1
                        中0+1

        * */

        //1.生成中奖号码
        int[] arr = creatNumber();
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        //2.输入自己号码
        int[] brr = myNumber(arr);
        for (int i = 0; i < brr.length; i++) {
            System.out.print(brr[i] + " ");
        }
        //3.判断是否中奖
        level(arr,brr);
    }

    private static int[] myNumber(int[] arr) {
        Scanner sc = new Scanner(System.in);
        System.out.println();
        System.out.println("请输入你的抽奖号码:");
        // mynumber 在1~33 唯一不重复
        int[] brr = new int[arr.length];
        for (int i = 0; i < brr.length; i++) {
            //可以一个号一个号输入 并严格要求红球号码
            brr[i] = sc.nextInt();
        }
        return brr;
    }

    public static int[] creatNumber(){
        //红球数字不能重复
        int[] arr = new int[7];
        Random r = new Random();
        for (int i = 0; i < arr.length - 1; ) {
            boolean flag = true;
            int value = r.nextInt(33) + 1;
            for (int j = 0; j < i ; j++){
                if (arr[j] == value){
                    flag = false;
                }
            }
            if (flag){
                arr[i] = value;
                i++;
            }
        }
        //生成蓝球号码放在最后一位
        arr[arr.length - 1] = r.nextInt(16) + 1;
        return arr;
    }

    public static void level(int[] arr,int[] brr){
        //count记录红球相同的个数
        int count = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1; j++) {
                if (arr[i] == brr[j]){
                    count++;
                    //找到之后就没必要再比较了
                    break;
                }
            }
        }
        //flag记录蓝球是否相等 0不等 1相等
        int flag = 0;
        if (arr[arr.length - 1] == brr[brr.length - 1]){
            flag = 1;
        }
        System.out.println();
        System.out.println("中" + count + "+" + flag);
        //level记录中奖等级
        int level = 0;
        if ((count == 1 && flag ==1) || (count == 0 && flag == 1)){
            level = 6;
            System.out.println("六等奖");
        }else if ((count == 2 && flag == 1) || (count == 3 && flag == 1) || count ==4 && flag == 0){
            level = 5;
            System.out.println("五等奖");
        }else if ((count == 4 && flag == 1) || count == 5 && flag == 0){
            level = 4;
            System.out.println("四等奖");
        }else if (count == 5 && flag == 1){
            level = 3;
            System.out.println("三等奖");
        }else if (count == 6 && flag == 0){
            level = 2;
            System.out.println("二等奖");
        }else if (count == 6 && flag == 1){
            level = 1;
            System.out.println("一等奖");
        }else {
            System.out.println("谢谢惠顾");
        }
    }
}

输出结果:

思考:键盘输入方法,即myNumber()方法处可做精进,可以逐个号码录入,并判断每个号码是否符合条件(红球1-33且各不相同)

 

<think>好的,我现在需要帮用户找到关于Java实现双色球的练习题或示例代码。首先,用户提到了几个引用内容,都是关于Java基础练习的,比如找质数、数组复制、评委打分等。用户可能希望有一个类似的练习题,比如双色球生成,这通常涉及随机数生成、数组操作、输入输出等知识点。 接下来,我需要回忆双色球的规则。双色球分为红球和蓝球,红球是1到33选6个不重复的号码,蓝球是1到16选1个。所以代码需要生成符合这些规则的随机数,并且可能有用户输入和结果对比的部分。 然后,看看用户提供的引用内容中的代码结构,比如引用1中的质数判断用了嵌套循环和布尔标志,引用3中的数组复制用了循环遍历。双色球的实现可能需要类似的结构,比如使用循环生成不重复的红球,随机选择蓝球,以及比较用户输入和开奖结果。 用户可能需要一个完整的示例代码,包含生成双色球号码、用户输入处理和中奖判断。同时,还要考虑可能的练习题方向,比如性能优化、功能扩展等,以生成相关问题。 需要注意代码的规范性和可读性,比如使用合适的方法分解功能,添加注释,以及处理输入验证,比如用户输入的数字是否在范围内,是否有重复等。此外,随机数的生成要确保不重复,可以用洗牌算法或者集合来保证唯一性。 最后,根据用户的引用,可能需要引用相关的示例,比如引用3中的数组复制,可以类比到双色球数组的操作,但用户提供的引用中没有直接的双色球代码,所以需要自行构造。同时,生成的问题要围绕双色球实现的不同方面,比如优化随机算法、增加统计功能、输入验证等。</think>### Java双色球实现示例代码 双色球实现包含红球(1-33选6不重复)和蓝球(1-16选1)的生成逻辑,以下是基础实现: ```java import java.util.Arrays; import java.util.Random; import java.util.Scanner; public class DoubleColorBall { public static void main(String[] args) { // 生成开奖号码 int[] winningRed = generateRedNumbers(); int winningBlue = generateBlueNumber(); // 获取用户选号 int[] userRed = getUserRedNumbers(); int userBlue = getUserBlueNumber(); // 计算中奖结果 checkResult(winningRed, winningBlue, userRed, userBlue); } // 生成红球数组 private static int[] generateRedNumbers() { int[] red = new int[6]; Random rand = new Random(); boolean[] used = new boolean[34]; // 索引1-33对应红球号 for(int i=0; i<6; ){ int num = rand.nextInt(33)+1; if(!used[num]){ red[i++] = num; used[num] = true; } } Arrays.sort(red); return red; } // 生成蓝球 private static int generateBlueNumber() { return new Random().nextInt(16)+1; } // 用户输入红球 private static int[] getUserRedNumbers() { Scanner sc = new Scanner(System.in); int[] red = new int[6]; System.out.println("请输入6个红球(1-33,空格分隔):"); // 实际开发需添加输入验证 for(int i=0; i<6; i++){ red[i] = sc.nextInt(); } Arrays.sort(red); return red; } // 用户输入蓝球 private static int getUserBlueNumber() { Scanner sc = new Scanner(System.in); System.out.print("请输入蓝球(1-16):"); return sc.nextInt(); } // 校验中奖结果 private static void checkResult(int[] winRed, int winBlue, int[] userRed, int userBlue) { int redCount = 0; for(int num : userRed){ if(Arrays.binarySearch(winRed, num) >=0) redCount++; } boolean blueMatch = (winBlue == userBlue); System.out.println("开奖红球:" + Arrays.toString(winRed) + " 蓝球:" + winBlue); System.out.println("您中了红球" + redCount + "个,蓝球" + (blueMatch ? "匹配" : "不匹配")); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序猿jjr

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

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

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

打赏作者

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

抵扣说明:

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

余额充值