为什么买彩票老不中奖,看完代码你还买彩票吗?(双色球系统)#java

前言

这篇文章和大家分享一下,这双色球系统的原理与代码实现,在此希望大家“珍爱生命,远离赌博”

了解原理后,希望家人们可以感受,中奖希望之渺茫!!!

 一、了解双色球的规则

规则:投注6个红球(红球数字在1~33),一个蓝球(蓝球数字在1~16),
一等奖   :中6个红球1个蓝球
二等奖   :中6个红球0个蓝球
三等奖   :中5个红球1个蓝球
四等奖   :中5个红球0个蓝球
                中4个红球1个蓝球
五等奖   :中4个红球0个蓝球
                 中3个红球1个蓝球
六等奖   :中2个红球1个蓝球
               中1个红球1个蓝球
               中0个红球1个蓝球

二、分析问题

了解完规则之后,家人们是不是有了大概的逻辑思路了呢。

这个问题简单来讲:只需要分为三步就可以完成,

1、首先:我们随机生成一串中奖号码

2、然后:键盘录入我们自己购买的中奖号码;

3、最后:是不是就只需要一判断有没有中奖就结束了

接下来我们就一步一步来用代码进行实现,有idea的家人可以和主包一起来爽一下

三、代码实现

1、随机生成一串中奖号码

随机生成一串中奖号码,想都不用想,我们肯定要用到Random了,但是这一串号码,我们得找个地方,给他存起来,因为我们只知道这串中奖号码有7位,所以我们首先给他定义一个动态数组

int []arr=new int[7];

接下来我们就可以使用我们亲爱的Random来new一下啦

Random r=new Random();

好了,new完之后我们就要获取红球和蓝球上的号码了,但是主包介绍规则时少了一条:

红球是不能重复得  比如1 2 3 4 5 6   但是蓝球得号码是可以和红球重复的

所以我们 先搞个判断方法,看一下这个数组里是不是已经存在这个数

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

        }
        return false;

    }

现在我们就可以来获取6个红球的号码啦。直接就是一个for循环

for (int i = 0; i < 6;) {
            int rednumber= r.nextInt(33)+1;
            boolean flag= contains(arr,rednumber);
            if (!flag){
                arr[i]=rednumber;
                i++;
            }
        }

蓝球就一个直接获取一手,返回到数组中 

 int bluenumder=r.nextInt(16)+1;
        arr[arr.length-1]=bluenumder;
        return arr;

到这我们第一部分就完成喽

2、键盘录入我们自己购买的中奖号码

同样的步骤:先得有一个数组我们才能得到号码,所以我们先创建一个动态数组

 int arr[]=new int[7];

接下来我们就不使用Random,得使用Scanner这位好伙伴喽

   Scanner sc=new Scanner(System.in);

接下来就输入你的号码喽

在此处我们需要加入if判断,超出范围或者重复就不能放入数组中去

先输入红球号码

for (int i = 0; i < 6;) {
            System.out.println("请输入第"+(i+1)+"个红球号码(1-33)");
            int rednumber=sc.nextInt();
            if (rednumber>=1 && rednumber<=33){
                boolean flag= contains(arr,rednumber);
                if (!flag){
                    arr[i]=rednumber;
                    i++;

                }else {
                    System.out.println("当前红球号码重复,请重新输入");
                }

            }else {
                System.out.println("当前红球号码超出范围");
            }

        }

接下来输入蓝球,同样的超出范围或者重复是不能放入数组中去哒

 while (true) {
            System.out.println("请输入蓝球号码(1-16)");
            int bluenumber= sc.nextInt();
            if (bluenumber>=1 && bluenumber<=16){
                arr[arr.length-1]=bluenumber;
                break;

            }else {
                System.out.println("当前蓝球号码超出范围");
            }
        }
        return arr;

3、判断有没有中奖

我们先建立一个统计数变量,来统计中奖个数

int redcount=0;
int bluecount=0;

判断红球中奖得个数

for (int i = 0; i < userInputArr.length-1; i++) {
            int rednumber=userInputArr[i];

            for (int j = 0; j < arr.length-1; j++) {
                if (rednumber==arr[j]){
                    redcount++;
                    break;
                }
            }
        }

判断蓝球中奖得个数

   int bluenumber=userInputArr[userInputArr.length-1];
        if (bluenumber==arr[arr.length-1]){
            bluecount++;
        }

好了我们可以打印输出一下

System.out.println("红球中了"+ redcount+"个");
System.out.println("蓝球中了"+ bluecount+"个");

接下来我们用if来将结果按照对应的规则输出一下

主包给你们把奖池扩大

 if (redcount==6 && bluenumber==1){
            System.out.println("恭喜你,中奖100万");
        } else if (redcount==6 && bluenumber==0) {
            System.out.println("恭喜你,中奖80万");
        }else if (redcount==5 && bluenumber==1) {
            System.out.println("恭喜你,中奖60万");
        } else if ((redcount==5 && bluenumber==0) ||(redcount==4 && bluenumber==1) ){
            System.out.println("恭喜你,中奖30000");
        } else if ((redcount==4 && bluenumber==0) ||(redcount==3 && bluenumber==1) ) {
            System.out.println("恭喜你,中奖1000");
        } else if((redcount==2 && bluenumber==1) ||(redcount==1 && bluenumber==1)|| 
        (redcount==0 && bluenumber==1) ){
            System.out.println("恭喜你,中奖50");
        }else {
            System.out.println("谢谢惠顾");
        }

四、整体代码

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

public class twocolourball {
    public static void main(String[] args) {
        /*规则:
        一等奖   :中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]+" ");
        }

         */
        System.out.println("       ");
        //2、用户输入号码
        int []userInputArr=userInputNumber();
        /*for (int i = 0; i < userInputArr.length; i++) {
            System.out.println(userInputArr[i]);
        }

         */
        //判断是否中奖
        int redcount=0;
        int bluecount=0;

        //判断红球
        for (int i = 0; i < userInputArr.length-1; i++) {
            int rednumber=userInputArr[i];

            for (int j = 0; j < arr.length-1; j++) {
                if (rednumber==arr[j]){
                    redcount++;
                    break;
                }
            }
        }
        //判断蓝球
        int bluenumber=userInputArr[userInputArr.length-1];
        if (bluenumber==arr[arr.length-1]){
            bluecount++;
        }

        System.out.println("红球中了"+ redcount+"个");
        System.out.println("蓝球中了"+ bluecount+"个");
        if (redcount==6 && bluenumber==1){
            System.out.println("恭喜你,中奖100万");
        } else if (redcount==6 && bluenumber==0) {
            System.out.println("恭喜你,中奖80万");
        }else if (redcount==5 && bluenumber==1) {
            System.out.println("恭喜你,中奖60万");
        } else if ((redcount==5 && bluenumber==0) ||(redcount==4 && bluenumber==1) ){
            System.out.println("恭喜你,中奖30000");
        } else if ((redcount==4 && bluenumber==0) ||(redcount==3 && bluenumber==1) ) {
            System.out.println("恭喜你,中奖1000");
        } else if((redcount==2 && bluenumber==1) ||(redcount==1 && bluenumber==1)||(redcount==0 && bluenumber==1) ){
            System.out.println("恭喜你,中奖50");
        }else {
            System.out.println("谢谢惠顾");
        }


    }
    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)+"个红球号码(1-33)");
            int rednumber=sc.nextInt();
            if (rednumber>=1 && rednumber<=33){
                boolean flag= contains(arr,rednumber);
                if (!flag){
                    arr[i]=rednumber;
                    i++;

                }else {
                    System.out.println("当前红球号码重复,请重新输入");
                }

            }else {
                System.out.println("当前红球号码超出范围");
            }

        }
        //输入蓝球号码
        while (true) {
            System.out.println("请输入蓝球号码(1-16)");
            int bluenumber= sc.nextInt();
            if (bluenumber>=1 && bluenumber<=16){
                arr[arr.length-1]=bluenumber;
                break;

            }else {
                System.out.println("当前蓝球号码超出范围");
            }
        }
        return arr;
    }

    public static int[] creatNumber(){
        //1 创建数组来存储中奖号码
        //6个红球,1个蓝球
        int []arr=new int[7];
        //2、随机生成中奖号码并存在数组中
        //红球 不能重复 123456
        //蓝球 可以和红球重复
        //生成红球并加在数组中
        Random r=new Random();
        for (int i = 0; i < 6;) {
            //获取红球号码
            int rednumber= r.nextInt(33)+1;
            boolean flag= contains(arr,rednumber);
            if (!flag){
                arr[i]=rednumber;
                i++;
            }
        }
        int bluenumder=r.nextInt(16)+1;
        arr[arr.length-1]=bluenumder;
        return arr;
    }
    //判断是否在数组中存在
    public static boolean contains(int[]arr,int number){
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]==number){
                return true;
            }

        }
        return false;

    }
}

如果你是正人君子,就自己实现一下,如果不是,可以使用主包打好的来玩一下

五、结尾

主包运行半天,也没有,中过奖,主包可能没有中奖得命

家人们可以将你们的代码,中奖记录可以回复到评论区,让主包吸吸欧气

能否给主包点点关注,我们下期再见。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值