【Java】抽奖系统———保姆学习教程

简介: 【Java】抽奖系统———保姆学习教程

一、抽奖系统介绍

抽奖的号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1-33中选择,不允许重复,蓝色球号码从1-16中选择。红色球只看值,不看顺序。

注:我们这里规定一等奖为1000万,二等奖为30万,其他与表中一致。

二、代码实现

1、随机生成中奖号码

1.1、中奖号码createNumber方法

创建一个长度为7的数组存放中奖号码,其中前6个为红球,最后1个为蓝球。

需要注意的是,for循环中,需要把i++放在if判断语句中,当数字重复时不执行i++语句,只有录入成功才进行++操作。

    public static int[] createNumber() {
        int[] arr = new int[7];
        Random r = new Random();
        //生成红球号码
        for (int i = 0; i < 6; ) {
            int redNumber = r.nextInt(33) + 1;
            if (contains(arr, redNumber)) {
                arr[i] = redNumber;
                i++;
            }
        }
        //生成蓝球号码
        int blueNumber = r.nextInt(16) + 1;
        arr[6] = blueNumber;
        return arr;
    }
1.2、控制判断contains方法

当数组arr中有num则返回false,没有则返回true。

    public static boolean contains(int[] arr, int num) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == num) {
                return false;
            }
        }
        return true;
    }

2、用户输入中奖号码

同样创建一个长度为7的数组,利用键盘录入用户输入号码。同样i++需要放入if判断语句中,当录入成功再进行++操作。

public static int[] userInputNumber() {
        int[] arr = new int[7];
        Scanner sc = new Scanner(System.in);
        //输入红球号码
        for (int i = 0; i < 6; ) {
            System.out.println("请输入第" + (i + 1) + "红球号码");
            int redNumber = sc.nextInt();
            if (redNumber >= 1 && redNumber <= 33) {
                if (contains(arr, redNumber)) {
                    arr[i] = redNumber;
                    i++;
                } else {
                    System.out.println("当前红球号码已存在,请重新输入");
                }
            } else {
                System.out.println("当前红球号码超出范围");
            }
        }
        //输入蓝球号码
        while (true) {
            System.out.println("请输入蓝球号码");
            int blueNumber = sc.nextInt();
            if (blueNumber >= 1 && blueNumber <= 16) {
                arr[arr.length - 1] = blueNumber;
                break;
            } else {
                System.out.println("当前蓝球号码超出范围");
            }
        }
        return arr;
    }

3、判断中奖情况

定义redCount和blueCount存放相同球的个数,写for循环时需要注意红球的范围。

    public static void main(String[] args) {
        //随机生成中奖号码
        int[] arr = createNumber();
        //用户输入中奖号码
        int[] userArr = userInputNumber();
        //判断中奖情况
        int redCount = 0;
        int blueCount = 0;
        for (int i = 0; i < userArr.length - 1; i++) {
            int redNumber = userArr[i];
            for (int j = 0; j < arr.length - 1; j++) {
                if (redNumber == arr[j]) {
                    redCount++;
                    break;
                }
            }
        }
        int blueNumber = userArr[userArr.length - 1];
        if (blueNumber == arr[arr.length - 1]) {
            blueCount++;
        }
        int winNum = isWin(redCount, blueCount);
        switch (winNum) {
            case 1 -> System.out.println("恭喜你,中奖1000万");
            case 2 -> System.out.println("恭喜你,中奖30万");
            case 3 -> System.out.println("恭喜你,中奖3000元");
            case 4 -> System.out.println("恭喜你,中奖200元");
            case 5 -> System.out.println("恭喜你,中奖10元");
            case 6 -> System.out.println("恭喜你,中奖5元");
            default -> System.out.println("非常遗憾,没有中奖");
        }
    }
3.1、判断奖项isWin方法

用于判断是否中奖以及中几等奖的函数,几等奖对应返回数字几,并在main中用switch判断。

    public static int isWin(int red, int blue) {
        if (red == 6 && blue == 1)
            return 1;
        else if (red == 6 && blue == 0)
            return 2;
        else if (red == 5 && blue == 1)
            return 3;
        else if ((red == 5 && blue == 0) || (red == 4 && blue == 1))
            return 4;
        else if ((red == 4 && blue == 0) || (red == 3 && blue == 1))
            return 5;
        else if ((red == 2 && blue == 1) || (red == 1 && blue == 1) || (red == 0 && blue == 1))
            return 6;
        else
            return 7;
    }

三、完整代码

import java.util.Random;
import java.util.Scanner;
public class test7 {
    public static void main(String[] args) {
        //随机生成中奖号码
        int[] arr = createNumber();
        //用户输入中奖号码
        int[] userArr = userInputNumber();
        //判断中奖情况
        int redCount = 0;
        int blueCount = 0;
        for (int i = 0; i < userArr.length - 1; i++) {
            int redNumber = userArr[i];
            for (int j = 0; j < arr.length - 1; j++) {
                if (redNumber == arr[j]) {
                    redCount++;
                    break;
                }
            }
        }
        int blueNumber = userArr[userArr.length - 1];
        if (blueNumber == arr[arr.length - 1]) {
            blueCount++;
        }
        int winNum = isWin(redCount, blueCount);
        switch (winNum) {
            case 1 -> System.out.println("恭喜你,中奖1000万");
            case 2 -> System.out.println("恭喜你,中奖30万");
            case 3 -> System.out.println("恭喜你,中奖3000元");
            case 4 -> System.out.println("恭喜你,中奖200元");
            case 5 -> System.out.println("恭喜你,中奖10元");
            case 6 -> System.out.println("恭喜你,中奖5元");
            default -> System.out.println("非常遗憾,没有中奖");
        }
    }
    public static int isWin(int red, int blue) {
        if (red == 6 && blue == 1)
            return 1;
        else if (red == 6 && blue == 0)
            return 2;
        else if (red == 5 && blue == 1)
            return 3;
        else if ((red == 5 && blue == 0) || (red == 4 && blue == 1))
            return 4;
        else if ((red == 4 && blue == 0) || (red == 3 && blue == 1))
            return 5;
        else if ((red == 2 && blue == 1) || (red == 1 && blue == 1) || (red == 0 && blue == 1))
            return 6;
        else
            return 7;
    }
    public static int[] userInputNumber() {
        int[] arr = new int[7];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 6; ) {
            System.out.println("请输入第" + (i + 1) + "红球号码");
            int redNumber = sc.nextInt();
            if (redNumber >= 1 && redNumber <= 33) {
                if (contains(arr, redNumber)) {
                    arr[i] = redNumber;
                    i++;
                } else {
                    System.out.println("当前红球号码已存在,请重新输入");
                }
            } else {
                System.out.println("当前红球号码超出范围");
            }
        }
        while (true) {
            System.out.println("请输入蓝球号码");
            int blueNumber = sc.nextInt();
            if (blueNumber >= 1 && blueNumber <= 16) {
                arr[arr.length - 1] = blueNumber;
                break;
            } else {
                System.out.println("当前蓝球号码超出范围");
            }
        }
        return arr;
    }
    public static int[] createNumber() {
        int[] arr = new int[7];
        Random r = new Random();
        for (int i = 0; i < 6; ) {
            int redNumber = r.nextInt(33) + 1;
            if (contains(arr, redNumber)) {
                arr[i] = redNumber;
                i++;
            }
        }
        int blueNumber = r.nextInt(16) + 1;
        arr[6] = blueNumber;
        return arr;
    }
    public static boolean contains(int[] arr, int num) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == num) {
                return false;
            }
        }
        return true;
    }
}

此次双色球彩票系统的内容就到此为止了,相信大家也能够做出属于自己的双色球彩票系统,这个系统最重要的是代码思维而不是代码本身,理解代码思维能够得到更大的提升。

如果觉得作者写的不错,求给作者一个大大的点赞支持一下,你们的支持是我更新的最大动力!

目录
相关文章
|
1天前
|
数据采集 前端开发 Java
Java医院绩效考核系统源码maven+Visual Studio Code一体化人力资源saas平台系统源码
医院绩效解决方案包括医院绩效管理(BSC)、综合奖金核算(RBRVS),涵盖从绩效方案的咨询与定制、数据采集、绩效考核及反馈、绩效奖金核算到科到组、分配到员工个人全流程绩效管理;将医院、科室、医护人员利益绑定;全面激活人才活力;兼顾质量和效益、长期与短期利益;助力医院降本增效,持续改善、优化收入、成本结构。
4 0
|
1天前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
13 5
|
1天前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(四十二)-java+ selenium自动化测试 - 处理iframe -下篇(详解教程)
【5月更文挑战第6天】本文介绍了如何使用Selenium处理含有iframe的网页。作者首先解释了iframe是什么,即HTML中的一个框架,用于在一个页面中嵌入另一个页面。接着,通过一个实战例子展示了在QQ邮箱登录页面中,由于输入框存在于iframe内,导致直接定位元素失败。作者提供了三种方法来处理这种情况:1)通过id或name属性切换到iframe;2)使用webElement对象切换;3)通过索引切换。最后,给出了相应的Java代码示例,并提醒读者根据iframe的实际情况选择合适的方法进行切换和元素定位。
7 0
|
2天前
|
存储 Java API
java对接IPFS系统-以nft.storage为列
java对接IPFS系统-以nft.storage为列
11 2
|
2天前
|
缓存 Java 数据库
Java并发编程学习11-任务执行演示
【5月更文挑战第4天】本篇将结合任务执行和 Executor 框架的基础知识,演示一些不同版本的任务执行Demo,并且每个版本都实现了不同程度的并发性。
20 4
Java并发编程学习11-任务执行演示
|
2天前
|
监控 前端开发 Java
Java基于B/S医院绩效考核管理平台系统源码 医院智慧绩效管理系统源码
医院绩效考核系统是一个关键的管理工具,旨在评估和优化医院内部各部门、科室和员工的绩效。一个有效的绩效考核系统不仅能帮助医院实现其战略目标,还能提升医疗服务质量,增强患者满意度,并促进员工的专业成长
9 0
|
2天前
|
前端开发 测试技术 Python
《手把手教你》系列技巧篇(四十一)-java+ selenium自动化测试 - 处理iframe -上篇(详解教程)
【5月更文挑战第5天】本文介绍了HTML中的`iframe`标签,它用于在网页中嵌套其他网页。`iframe`常用于加载外部内容或网站的某个部分,以实现页面美观。文章还讲述了使用Selenium自动化测试时如何处理`iframe`,通过`switchTo().frame()`方法进入`iframe`,完成相应操作,然后使用`switchTo().defaultContent()`返回主窗口。此外,文章提供了一个包含`iframe`的HTML代码示例,并给出了一个简单的自动化测试代码实战,演示了如何在`iframe`中输入文本。
14 3
|
2天前
|
Java 云计算
Java智能区域医院云HIS系统SaaS源码
云HIS提供标准化、信息化、可共享的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。优化就医、管理流程,提升患者满意度、基层首诊率,通过信息共享、辅助诊疗等手段,提高基层医生的服务能力构建和谐的基层医患关系。
16 2
|
3天前
|
前端开发 Java 关系型数据库
Java医院绩效考核系统源码B/S架构+springboot三级公立医院绩效考核系统源码 医院综合绩效核算系统源码
作为医院用综合绩效核算系统,系统需要和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作量,绩效考核系统设有手工录入功能(可以批量导入),对获取的数据系统按照设定的公式进行汇算,且设置审核机制,可以退回修正,系统功能强大,完全模拟医院实际绩效核算过程,且每步核算都可以进行调整和参数设置,能适应医院多种绩效核算方式。
22 2
|
3天前
|
JavaScript 前端开发 Java
《手把手教你》系列技巧篇(四十)-java+ selenium自动化测试-JavaScript的调用执行-下篇(详解教程)
【5月更文挑战第4天】本文介绍了如何使用JavaScriptExecutor在自动化测试中实现元素高亮显示。通过创建并执行JS代码,可以改变元素的样式,例如设置背景色和边框,以突出显示被操作的元素。文中提供了一个Java示例,展示了如何在Selenium中使用此方法,并附有代码截图和运行效果展示。该技术有助于跟踪和理解测试过程中的元素交互。
8 0