双色球彩票系统(java)

【题目介绍】

img

【题目详情】

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

【输入形式】

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

【输出形式】

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

【思路】

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

【代码实现】

  • 第一步,我们要随机生成号码,并且判断这些随机生成的号码是否符合条件
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;
        }
    }

【效果图如下】

在这里插入图片描述

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您想了解如何编写一个双色球彩票Java程序吗?如果是的话,我可以给您一些指导。 首先,您需要了解双色球彩票的规则。双色球彩票是由蓝色球和红色球组成的彩票。在蓝色球中选择 1 个号码,在红色球中选择 6 个号码。如果您选择的号码与开奖号码匹配,您就可以赢得奖金。 接下来,您可以开始编写Java程序。您可以使用随机数生成器生成彩票号码,并将其与开奖号码进行比较,以确定是否中奖。 以下是一个简单的双色球彩票Java程序的示例: ```java import java.util.*; public class DoubleColorBall { public static void main(String[] args) { Scanner input = new Scanner(System.in); Random rand = new Random(); int[] lottery = new int[7]; // 生成彩票号码 lottery[0] = rand.nextInt(16) + 1; // 生成蓝色球 for (int i = 1; i <= 6; i++) { // 生成红色球 int num = rand.nextInt(33) + 1; while (contains(lottery, num)) { // 避免重复的号码 num = rand.nextInt(33) + 1; } lottery[i] = num; } System.out.print("请输入您选择的彩票号码(蓝色球和红色球之间用空格分隔):"); int[] guess = new int[7]; for (int i = 0; i < 7; i++) { // 获取用户输入的彩票号码 guess[i] = input.nextInt(); } int count = 0; for (int i = 0; i < 7; i++) { // 比较彩票号码和开奖号码 if (contains(lottery, guess[i])) { count++; } } System.out.println("开奖号码为:" + Arrays.toString(lottery)); if (count == 7) { System.out.println("恭喜您中了一等奖!"); } else if (count == 6) { System.out.println("恭喜您中了二等奖!"); } else if (count == 5) { System.out.println("恭喜您中了三等奖!"); } else if (count == 4) { System.out.println("恭喜您中了四等奖!"); } else if (count == 3) { System.out.println("恭喜您中了五等奖!"); } else { System.out.println("很遗憾,您没有中奖。"); } } public static boolean contains(int[] arr, int num) { // 判断数组中是否包含某个数 for (int i = 0; i < arr.length; i++) { if (arr[i] == num) { return true; } } return false; } } ``` 这个程序可以生成彩票号码,获取用户输入的彩票号码,比较彩票号码和开奖号码,以确定是否中奖。您可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

都不会的鲨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值