双色球彩票系统(java)

【题目介绍】

双色球彩票系统(java)_第1张图片

【题目详情】

将用户输入的竞猜号码与随机生成的号码进行比较,核算出红球和蓝球的竞猜结果,根据结果判断出用户的获奖情况。

【输入形式】

根据系统的交互提示,依次输入竞猜号码。

【输出形式】

系统会依次输出客户的红球竞猜结果和篮球竞猜结果,最后会输出彩票的获奖情况。

【思路】

  • 首先,我们会先随机生成红球号码和蓝球号码,并将这些号码存放到一个数组中。这里要求随机生成的红球号码存放到数组中时不能有重复的数字,并且要满足红球号码大于等于一并且小于等于三十三,蓝球号码大于等于一小于等于十六的生成条件
  • 接着要引导用户输入彩色双色球号码,并将这些号码存放到另一个数组中。在用户输入红球号码时要判断是否与之前输入的号码重复,如果重复则需要引导用户重复输入,直到输入了符合规范的号码。
  • 最后要将用户输入的号码和已经随机生成的号码进行比较生成竞猜结果和获奖结果。因为蓝球和红球的情况不一致,要单独比较蓝球的竞猜结果。将做后的竞猜结果和获奖情况进行比较,进而与获奖条件进行比较,输出用户是否获奖,获奖的话还要输出奖金多少

【代码实现】

  • 第一步,我们要随机生成号码,并且判断这些随机生成的号码是否符合条件

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;
            boolean flag = contains(arr, redNumber);
            if (!flag) {
                arr[i] = redNumber;
                i++;
            }
        }
        int blueNumber=r.nextInt(16)+1;
        arr[arr.length-1]=blueNumber;
        return arr;
    }

根据驼峰命名法命名随机生成号码的方法为 creatNumber ,在这个方法中,我们要用Random来生成随机出,并且要将生成的范围是一到三十三的随机数存放到一个素组中。在存放到数组中之前我们要判断数组中是否有一个数和生成的数重复,如果重复则需要重新生成,一直到有一个数不与已有数重复。蓝球号码的的随机生成因为只有一个则不需要判断是否重复。

注意:生成蓝球号码和红球号码时时分开的,因为篮球的范围和红球的范围不一样。

注意2:红球号码存放到数组的前六位中,蓝球号码存放到第七位中,后面的用户输入的情况也是如此

判断是否重复时,这里创建了一个新的方法,用来遍历存放随机数的数组,查看比较是否有重复的

 public static boolean contains(int[] arr,int number)
    {
        for (int j : arr) {
            if (j == number) {
                return true;
            }
        }
        return false;
        }
    }

这个判断是否重复的方法理解起来很简单,主要就是遍历整个数组,挨个判断是否相同,如果有一个相同,则返回布尔型true,如果遍历完整个数组没有找到相同的数,就说明没有相同的数已经存放到这个数组中,则返回false

  • 第二步,引导用户输入用户的竞猜号码,并判断用户输入的号码是否符合条件

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)
            {
                boolean flag=contains(arr,redNumber);
                if(!flag)
                {
                   arr[i]=redNumber;
                    i++;
                }
                else {
                    System.out.println("当前红球号码已经存在,请重新输入");
                }
            }else {
                System.out.println("当前红球号码超出范围");
            }
        }
        while (true) {
            System.out.println("蓝球号码为:");
            int biueNumber=sc.nextInt();
            if(biueNumber>=1&&biueNumber<=16)
            {
                arr[arr.length-1]=biueNumber;
                break;
            }
            else {
                System.out.println("当前蓝球号码超出范围,请重新输入");
            }
        }
        return arr;
    }

这段代码的主要目的是将用户输入的号码存放到一个数组中,然后将这个数组返回。代码较长,我们来分开查看代码。

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)
            {
                boolean flag=contains(arr,redNumber);
                if(!flag)
                {
                   arr[i]=redNumber;
                    i++;
                }
                else {
                    System.out.println("当前红球号码已经存在,请重新输入");
                }
            }else {
                System.out.println("当前红球号码超出范围");
            }
        }

先来看红球号码的输入。首先一个for循环,用来以次将用户输入的符合规范的数存放到一个数组中。这里要首先将用户输入的数进行一个判断,输入的数如果没有重复,则将该数存放到数组中,并且将数组的下标向后移位。输入的数如果不符合要求则将提示用户输入的数是超出了范围还是已存在。这里判断是否符合规范调用了之前已经写好的方法contains。

while (true) {
            System.out.println("蓝球号码为:");
            int biueNumber=sc.nextInt();
            if(biueNumber>=1&&biueNumber<=16)
            {
                arr[arr.length-1]=biueNumber;
                break;
            }
            else {
                System.out.println("当前蓝球号码超出范围,请重新输入");
            }
        }

最后来看一下蓝球号码的输入。蓝球号码只有一个条件,那就是要在范围内,所以一个if判断语句结束判断。

  • 第三步,对随机生成的号码和用户输入的数进行判断,输出结果

        int[] arr=createNumber();
        System.out.println("***************************");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
        System.out.println("***************************");
        int[] userInputNumber=userInputNumber();
        int redCount=0;
        int blueCount=0;
        for (int i = 0; i < userInputNumber.length-1; i++) {
        int readNumber=userInputNumber[i];

                for (int j = 0; j <userInputNumber.length-1 ; j++) {
                    if(readNumber==arr[j])
                    {
                        redCount++;
                        break;
                    }
                }
            }
        int blueNumber=userInputNumber[userInputNumber.length-1];
        if(blueNumber==arr[arr.length-1])
        {
            blueCount++;
        }
        System.out.println("红球中奖情况:");
        System.out.println(redCount);
        System.out.println("蓝球中奖情况:");
        System.out.println(blueCount);
        if(redCount==6&&blueCount==1) {
            System.out.println("恭喜你,中奖1000万");
        }else if(redCount==6&&blueCount==0){
            System.out.println("恭喜你,中奖500万");
        } else if (redCount==5&&blueCount==1) {
            System.out.println("恭喜你,中奖3000元");
        }else if ((redCount==5&&blueCount==0)||(redCount==4&&blueCount==1)) {
            System.out.println("恭喜你,中奖200元");
        }else if ((redCount==4&&blueCount==0)||(redCount==3&&blueCount==1)) {
            System.out.println("恭喜你,中奖10元");
        }else if ((redCount==2&&blueCount==1)||(redCount==1&&blueCount==1)||(redCount==0&&blueCount==1)){
            System.out.println("恭喜你,中奖5元");
        }else {
            System.out.println("谢谢参与,谢谢惠顾");
        }

这些代码我是放到了主函数中,没有重新创建。代码过长,拆开一次解析

int[] arr=createNumber();
        System.out.println("***************************");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
        System.out.println("***************************");
int[] userInputNumber=userInputNumber();

这一段代码主要是创建数组arr和数组userInputNumber,分别用来存放随机生成的一些号码和用户输入的号码。再次之间有一些输出,主要是用来检验的,在实际使用中可以适度删除

int redCount=0;
int blueCount=0;
        for (int i = 0; i < userInputNumber.length-1; i++) {
        int readNumber=userInputNumber[i];

                for (int j = 0; j <userInputNumber.length-1 ; j++) {
                    if(readNumber==arr[j])
                    {
                        redCount++;
                        break;
                    }
                }
            }
        int blueNumber=userInputNumber[userInputNumber.length-1];
        if(blueNumber==arr[arr.length-1])
        {
            blueCount++;
        }

这一段代码主要是分别统计红球和篮球的中奖次数。红球中奖的条件是用户输入的号码和随机生成的红球号码中有一个相同就代表这个号码中奖了,redCount加一,所以要进行对随机生成的红球号码的数组进行遍历,当遇到相同的号码后直接break,跳出循环,进行下一个号码的检验。蓝球只有一个,只需要用if来判断就可以。

注意:遍历红球号码时,要注意红球号码是存在数组的前六个里,不用遍历第七个数组

System.out.println("红球中奖情况:");
        System.out.println(redCount);
        System.out.println("蓝球中奖情况:");
        System.out.println(blueCount);
        if(redCount==6&&blueCount==1) {
            System.out.println("恭喜你,中奖1000万");
        }else if(redCount==6&&blueCount==0){
            System.out.println("恭喜你,中奖500万");
        } else if (redCount==5&&blueCount==1) {
            System.out.println("恭喜你,中奖3000元");
        }else if ((redCount==5&&blueCount==0)||(redCount==4&&blueCount==1)) {
            System.out.println("恭喜你,中奖200元");
        }else if ((redCount==4&&blueCount==0)||(redCount==3&&blueCount==1)) {
            System.out.println("恭喜你,中奖10元");
        }else if ((redCount==2&&blueCount==1)||(redCount==1&&blueCount==1)||(redCount==0&&blueCount==1)){
            System.out.println("恭喜你,中奖5元");
        }else {
            System.out.println("谢谢参与,谢谢惠顾");
        }

这一段代码主要是输出竞猜结果并且依据竞猜结果进行判断,判断用户是中了几等奖,奖金多少

【全代码展示】

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

public class Main {
    public static void main(String[] args) {
        int[] arr=createNumber();
        System.out.println("***************************");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
        System.out.println("***************************");
        int[] userInputNumber=userInputNumber();
        int redCount=0;
        int blueCount=0;
        for (int i = 0; i < userInputNumber.length-1; i++) {
        int readNumber=userInputNumber[i];

                for (int j = 0; j <userInputNumber.length-1 ; j++) {
                    if(readNumber==arr[j])
                    {
                        redCount++;
                        break;
                    }
                }
            }
        int blueNumber=userInputNumber[userInputNumber.length-1];
        if(blueNumber==arr[arr.length-1])
        {
            blueCount++;
        }
        System.out.println("红球中奖情况:");
        System.out.println(redCount);
        System.out.println("蓝球中奖情况:");
        System.out.println(blueCount);
        if(redCount==6&&blueCount==1) {
            System.out.println("恭喜你,中奖1000万");
        }else if(redCount==6&&blueCount==0){
            System.out.println("恭喜你,中奖500万");
        } else if (redCount==5&&blueCount==1) {
            System.out.println("恭喜你,中奖3000元");
        }else if ((redCount==5&&blueCount==0)||(redCount==4&&blueCount==1)) {
            System.out.println("恭喜你,中奖200元");
        }else if ((redCount==4&&blueCount==0)||(redCount==3&&blueCount==1)) {
            System.out.println("恭喜你,中奖10元");
        }else if ((redCount==2&&blueCount==1)||(redCount==1&&blueCount==1)||(redCount==0&&blueCount==1)){
            System.out.println("恭喜你,中奖5元");
        }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)+"个红球号码");
            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("蓝球号码为:");
            int biueNumber=sc.nextInt();
            if(biueNumber>=1&&biueNumber<=16)
            {
                arr[arr.length-1]=biueNumber;
                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;
            boolean flag = contains(arr, redNumber);
            if (!flag) {
                arr[i] = redNumber;
                i++;
            }
        }
        int blueNumber=r.nextInt(16)+1;
        arr[arr.length-1]=blueNumber;
        return arr;
    }
    public static boolean contains(int[] arr,int number)
    {
        for (int j : arr) {
            if (j == number) {
                return true;
            }
        }
        return false;
        }
    }

【效果图如下】

双色球彩票系统(java)_第2张图片

你可能感兴趣的:(实践小项目,java,1024程序员节)