• java专题训练(双色球,难度较大,必须细心)


    package 专题练习;
    //需求:
    //投注号码由6个红色球号码和1个蓝色球号码组成
    //红色球号码从1-33中选择;
    //蓝色球号码从1-16中选择
    
    /* 如下是中将条件和奖金表
    一等奖 : 红色球和蓝色球全中                    1000万
    二等奖 : 中6个红色球 0个蓝色球                 500万
    三等奖 : 中5个红色球 1个蓝色球                 3000元
    四等奖 : 中5个红色球                          200元
          或 中4个红球 1个蓝色球
    五等奖 : 中4个红球  0个蓝色球                  10元
          或 中3个红球  1个蓝色球
    六等奖 : 中2个红球  1个蓝色球                  5元
          或 中1个红球  1个蓝色球
          或 中0个红球  1个蓝色球
     */
    
    import java.util.Random;
    import java.util.Scanner;
    
    //思路: 1. (1)首先要随机生成6个红色球号码
    //         (2)判断红色号码是否重复
    //         (3)随机生成1个蓝色球号码
    //         (4)把红色球号码和蓝色球号码放到同一个数组中
    //
    //      2. (1)得到用户所给的号码
    //         (2)要判断号码是否符合规范
    //         (3)不符合规范要重新输入
    //
    //      3. 得到用户答对的号码的个数
    //      4. 6个if语句来最后判断
    
    
    public class Double_Color_Lottery_System {
    
        public static void main(String[] args) {
            //主入口
            //弄一个red数组
            int[] red_array = new int[6];
            //赋值red数组(6位)
            red_array = random_red_number(red_array); //得到6位red_number数组
            //生成蓝色随机号码
            int blue_num = blue_random_number();
            //合并
            int[] RED_BLUE = HeBing_number(red_array,blue_num);
            print_array(RED_BLUE);
    
            //得到用户号码
            int[] user_num = User_input(RED_BLUE);
            //求个数
            int[] count = ChouZhongGeShu(RED_BLUE,user_num);
            //求奖金
            GET_money(count);
        }
    
        //判断是否重复方法,重复返回-1,没有重复返回1
        public static int PanDuan_repetition(int[] red_number_array,int random_red_number){
            for (int i = 0; i < red_number_array.length; i++) {
                if(red_number_array[i] == random_red_number){
                    return -1;
                }
            }
            return 1;
        }
    
        //随机生成6个红色球号码
        public static int[] random_red_number(int[] red_number_array){
            Random r = new Random();
            int[] red_arrary = new int[red_number_array.length];
            for (int i = 0; i < red_number_array.length; i++) {
                int red_random_number = r.nextInt(33) + 1;
                //这里需要判断是否重复(可以写一个判断是否重复的方法)
                if(PanDuan_repetition(red_arrary,red_random_number) == -1){
                    i--;
                }
                else{
                    //没重复就录入
                    red_arrary[i] = red_random_number;
                }
            }
            return red_arrary;
        }
    
        //随机生成一个蓝色球号码
        public static int blue_random_number(){
            Random r = new Random();
            int blue_number = r.nextInt(16) + 1;
            return blue_number;
        }
    
        //合并蓝色球号码和红色球号码
        public static int[] HeBing_number(int[] red_array,int blue_number){
            int[] red_blue_array = new int[red_array.length + 1];
            //合并数组的长度为红色号码个数 + 蓝色号码个数
            for (int i = 0; i < red_blue_array.length - 1; i++) {
                red_blue_array[i] = red_array[i];
            }
            red_blue_array[red_blue_array.length - 1] = blue_number;
            return red_blue_array;
            //合并完毕(random_number_of_red_and_blue)
        }
    
        //得到用户所给号码  (返回的是一个数组,并且要判断输入的号码是否合理)
        public static int[] User_input(int[] red_blue_array){
            int[] number = new int[red_blue_array.length];
            //这里的number数组就是直接总长为7,前六个留给了red,等下直接把最后一个给蓝色球号码
    
            //输入红色号码的提示
            System.out.println("用户请准备输入红色号码");
            Scanner c = new Scanner(System.in);
            for (int i = 0; i < number.length - 1; i++) {
                System.out.println("开始读入第" + (i+1) + "个红色球号码");
                int user_number = c.nextInt();//用户读入
                if(user_number > 33 || user_number < 1){
                    System.out.println("读入错误,数字非法,请重新输入:");
                    i--;
                }
                else{
                    number[i] = user_number;
                }
            }
    
            //准备读入蓝色球号码
            System.out.println("开始读入蓝色球号码:");
            int blue_number;
            while (true) {
                blue_number = c.nextInt();
                if(blue_number>16 || blue_number<1){
                    System.out.println("蓝色球号码非法,请重新读入:");
                }
                else{
                    break;
                }
            }
            //合并user的红色球号码和蓝色球号码
            number[red_blue_array.length-1] = blue_number;
            return number;
            //合并完毕(user)
        }
    
        //求user对了几个红色球号码和蓝色球号码(可以返回一个小数组,记录分别中了多少个)
        public static int[] ChouZhongGeShu(int[] red_blue_random,int[] user_red_blue){
            int count_red = 0;
            int count_blue = 0;
    
            //开始记录红色球个数(两个数组的最后一个数都是blue值)
            for (int i = 0; i < red_blue_random.length - 1; i++) {
                for (int j = 0; j < user_red_blue.length - 1; j++) {
                    if(red_blue_random[i] == user_red_blue[j]){
                        count_red++;
                    }
                }
            }
    
            if(red_blue_random[red_blue_random.length-1] == user_red_blue[user_red_blue.length-1]){
                count_blue++;
            }
            //弄一个数组记录两个的值
            int[] red_or_blue_count = new int[]{count_red,count_blue};
            return red_or_blue_count;
        }
    
        //6个if条件语句
        public static void GET_money(int[] red_blue_count){
            //一等奖
            if(red_blue_count[0] == 6 && red_blue_count[1] == 1 ){
                System.out.println("1000万");
            }
            //二等奖
            else if(red_blue_count[0] == 6 && red_blue_count[1] == 0){
                System.out.println("500万");
            }
            //三等奖
            else if(red_blue_count[0] == 5 && red_blue_count[1] == 1){
                System.out.println("3000元");
            }
            //四等奖
            else if(red_blue_count[0] == 5 && red_blue_count[1] == 0 || red_blue_count[0] == 4 && red_blue_count[1] == 1){
                System.out.println("200元");
            }
            //五等奖
            else if(red_blue_count[0] == 4 && red_blue_count[1] == 0 || red_blue_count[0] == 3 && red_blue_count[1] == 1){
                System.out.println("10元");
            }
            //六等奖
            else if(red_blue_count[0] == 2 && red_blue_count[1] == 1 || red_blue_count[0] == 1 && red_blue_count[1] == 1 || red_blue_count[0] == 0 && red_blue_count[1] == 1){
                System.out.println("5元");
            }
        }
    
        //临时打印方法
        public static void print_array(int[] a){
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + " ");
            }
        }
    }
    
  • 相关阅读:
    C#求100-999之间的水仙花数,你知道多少个?让我们一起来探索!
    Flutter实战-请求封装(五)之Isolate线程改造
    基于ssm的大学校医院信息管理系统设计与实现-计算机毕业设计源码+LW文档
    实现抖音视频滑动功能vue3+swiper
    【快应用】网络图片保存到相册失败案例
    PyQt5快速开发与实战 4.1 QMainWindow
    doris 动态分区
    被邀请为期刊审稿时,如何做一个合格的审稿人?官方版本教程来喽
    阿里巴巴2022年最新最全面的500道Java后端面试大全(值得收藏)助你拿下面试
    java计算机毕业设计驾考服务系统MyBatis+系统+LW文档+源码+调试部署
  • 原文地址:https://blog.csdn.net/m0_74892619/article/details/133101638