IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 案例7:双色球系统开发 -> 正文阅读

[数据结构与算法]案例7:双色球系统开发

kage com.itheima;

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

public class Test6 {
    public static void main(String[] args) {
        //1.随机6个红球号码(1-33,不能重复),随机一个篮球号码(1-16),可以采用数组装起来作为中奖号码
        int[] luckNumbers = createLuckNumber();
       // printArray(luckNumbers);
        //2.调用一个方法让用户输入7个号码,作为用户选号
        int[] userNumbers = userInputNumbers();
        //printArray(userNumbers);

        //3.判断中奖情况
        judge(luckNumbers, userNumbers);


    }

    public static void judge(int[] luckNumbers, int[] userNumbers) {
        //判断是否中奖
        //luckNumbers = [12, 23, 8, 16, 15, 32, 9]
        //userNumbers = [23, 13,18, 6, 8, 33, 10]
        //1.定义两个变量分别存储红球红球命中的个数,以及篮球命中的个数
        int redHitNumbers = 0;
        int blueHitNumbers = 0;

        //2.判断红球命中了几个,开始统计
        for (int i = 0; i < userNumbers.length; i++) {
            for (int j = 0; j < luckNumbers.length; j++) {
                //每次找到了相等了,意味着当前号码命中了
                if (userNumbers == luckNumbers) {
                    redHitNumbers++;
                    break;
                }
            }
        }

        //篮球号码是否命中了
        blueHitNumbers = userNumbers[6] == luckNumbers[6] ? 1 : 0;

        System.out.println("中奖号码是:");
        printArray(luckNumbers);
        System.out.println("您投注的号码是:");
        printArray(userNumbers);
        System.out.println("您命中了几个红球:" + redHitNumbers);
        System.out.println("您是否命中篮球: " + (blueHitNumbers == 1 ? "是" : "否"));


        //判断中奖情况
        if (blueHitNumbers == 1 && redHitNumbers <= 3) {
            System.out.println("恭喜您,中了5元小奖! ");
        } else if (blueHitNumbers == 1 && redHitNumbers == 3
                || blueHitNumbers == 0 && redHitNumbers == 4) {
            System.out.println("恭喜您,中了10元小奖! ");
        } else if (blueHitNumbers == 1 && redHitNumbers == 4
                || blueHitNumbers == 0 && redHitNumbers == 5) {
            System.out.println("恭喜您,中了200元小奖! ");
        } else if (blueHitNumbers == 1 && redHitNumbers == 5) {
            System.out.println("恭喜您,中了3000元大奖! ");
        } else if (blueHitNumbers == 0 && redHitNumbers == 6) {
            System.out.println("恭喜您,中了500万超级大奖! ");
        } else if (blueHitNumbers == 1 && redHitNumbers == 6) {
            System.out.println("恭喜您,中了1000万巨奖!可以开始享受人生,诗和远方了~~ ");
        }else {
            System.out.println("感谢您为福利事业作出的突出贡献!! ");
        }

    }

    public static void printArray(int[] arr){
        for (int i = 0; i < arr.length ; i++) {
            System.out.print(arr[i] + "\t");
        }
        System.out.println();
    }




    public static int[] userInputNumbers(){
        //定义一个数组存储7个号码
        int[] numbers = new int[7];
        //让用户录入6个红球号码
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < numbers.length ; i++) {
            System.out.println("请您输入第" + (i + 1) + "个红球号码(1-33,要求不重复");
            int data = sc.nextInt();
            //把当前录入的数据存入到数组中去
            numbers[i] = data;

        }

        //单独录入一个篮球号码
        System.out.println("请您输入篮球号码(1-16) :");
        numbers[6] = sc.nextInt();
        return numbers;
    }


    public static int[] createLuckNumber(){
        //定义一个动态初始化的数组,存储7个数字
        int[] numbers = new int[7]; //  [12,23,0,0,0,0,0]

        //遍历数组,为每个位置生成对应的号码(注意,遍历前6个位置,生成6个不重复的红球号码,范围是1-33)
        Random r = new Random();
        for (int i = 0; i < numbers.length ; i++) {
            while(true){
                int data = r.nextInt(33) + 1; // 1-33 ====> (0-32) + 1
                //注意:必须判断当前随机的这个号码之前是否出现过,出现过的要重新随机一个,知道不重复为止,才可以存入数组中去
                //定义一个flag变量,默认认为data是没有重复的
                boolean flag = true;
                for (int j = 0; j < i; j++) {
                    if(numbers[i] == data){
                        //data 当前这个数据之前出现过,不能用
                        flag = false;
                        break;
                    }
                }
                if(flag){
                    //flag这个数据之前没有出现过,可以使用了
                    numbers[i] = data;
                    break;
                }
            }
        }
        //为第7个位置生成一个1-16的号码作为篮球号码
        numbers[numbers.length - 1] = r.nextInt(16) + 1;
        return numbers;
    }

?最后出了一点小差错,太晚了,实在不想检查了,以后有时间在检查检查,应该也就一点小错误(应该是有一个红色球的范围写错了),无关整体,要是有大佬帮我指正一下也可以。

学编程的小可爱们,可以给我点点小赞哦~~~

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 14:11:59  更:2022-01-01 14:13:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:35:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码