【用java写的】双色球中奖模拟器

导读:本篇文章讲解 【用java写的】双色球中奖模拟器,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

双色球,6个红球,1个蓝球,而且红球中的数据不能重复,红球的数字范围为1-33,蓝球的数字范围为1-16。

然后我们作为彩民,自己买号,在模拟器中则自己依次输入每个球对应的号码,最后开奖的时候判断我们中了多少。

双色球中奖规则:

【用java写的】双色球中奖模拟器

我当时看到这个案例,感觉很麻烦,首先我认为最难搞的方面是,生成红球的随机数,这个数我网上查了一下,双色球的数字是不能重复的,那么我就得要生成不同的6个随机数,然后存到数组里。怎么实现,当时我还在想。

后来我就先把程序的功能先分块:

1.随机生成中奖号码,定义一个数组长度为6的int 类型的数组存红球的号码,且红球的数组中数据不能有相同的,定义数组长度为1的数组来存蓝球号码。

2.用户也是我,依次输入我的红球号码和蓝球号码。

3.统计结果,双色球要顺序和数字都相同才算有效,也就是说,数组的索引和索引对应的数据都要相同才可以。

4.判断结果。

然后我就开始写

第一部分

  //随机生成中奖号码
        Scanner sc = new Scanner(System.in);
        Random r = new Random();
        int[] red = new int[6];
        int [] blue=new int[1];
       blue [0]= r.nextInt(16) + 1;//随机生成蓝球的号码
        System.out.println(blue[0]);
        for (int i = 0; i < red.length; ) {    //随机生成红球号码,且随机数不能重复
            int a = r.nextInt(33) + 1;
            boolean b = Shuijishupanduan(red, a);
            if (!b) {
                red[i] = a;
                i++;
            }
        }

在其中我调用了一个有返回值的方法,用来判断随机数是否重复的,这是我认为最难的地方,但是我也想出来了哈哈哈。方法是这样的:

 //判断随机数是否相同的方法
    public static boolean Shuijishupanduan(int[] arr, int a) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == a) {
                return true;
            }
        }
        return false;

 返回一个boolean类型,然后i++放在,if语句中,就表示随机数一直生成,到这个随机数在数组中没有相同的时候就存入数组中,然后才能 i 自增到数组中下一位循环。在这里我设了随机数的范围是1-33.

第二部分

//用户输入自己的号码
        int []arr=new int[6];
        int []arr1=new int[1];
        System.out.println("覃泺宇牌双色球,赢到手麻");
        int n=1;
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请输入你的第"+n+"个红球的号码:");
            int shuru=sc.nextInt();
            arr[i]=shuru;
            n++;
        }
        System.out.println("请输入蓝球的号码:");
        int B=sc.nextInt();
        arr1[0]=B;

简单的遍历数组,然后给数组塞数据,逐个塞进去,定义了2个数组来存我自己输入的数据,然后后面就可以和之前随机生成的中奖号码的两个数组(一个红球的,一个蓝球的)进行比较。(索引相同的数据也相同才算有效)

第三部分 

//判断红、蓝球有几个和中奖号码相同的,红球和蓝球分开统计。

   int RED=xiangtong(red,arr);
   int BULE=xiangtong(blue,arr1);

判断两个数组有几个数据相同,再定义一个计数器来统计相同的个数就完事了,那么我又要比红球的,又要比蓝球的,这两种是重复的工作,我当时就定义了一个方法,输入要比较的两个数组,就可以返回他们有几个相同索引数据也一样的元素。

 //判断两个数组有多少个相同的数据
    public static int xiangtong(int arr1[],int arr2[]) {
        int xiangtongshu=0;
        for (int i = 0; i < arr1.length; i++) {
            if (arr2[i]==arr1[i]){   //双色球的号码要相同,而且还要对应的位置也相同(也就是俩数组的相同索引的数据要一样)
                xiangtongshu++;
            }
        }
    return xiangtongshu;

第四部分

就是判断结果了,依照上图的规则,用if语句就可以了,然后我就也定义了一个方法,只要输入红球中的数和蓝球中的数,便可返回几等奖。

 //判断奖项
    public static void jiang(int r,int b){
        if (r==6 && b==1){
            System.out.println("恭喜你!中了一等奖,奖金1000万元!");
        }
        else if (r==6 && b==0){
            System.out.println("恭喜你!中了二等奖,奖金500万元!");
        }
        else if (r==5 && b==1){
            System.out.println("恭喜你!中了三等奖,奖金3000元!");
        }
        else if ((r==5 && b==0)||(r==4 && b==1)){
            System.out.println("恭喜你!中了个四等奖,奖金200元!");
        }     else if ((r==4 && b==0)||(r==3&&b==1)){
            System.out.println("恭喜你!中了个五等奖,奖金10元");
        }
        else if ((r==2&&b==1)||(r==1&&b==1)||(r==0&&b==1)){
            System.out.println("恭喜你!大怨种,中了六等奖,奖金5元");
        }
    }

再调用一下方法

 jiang(RED,BULE);

总体的程序是这样的:

package Test;

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

public class Shangseqiu {
    public static void main(String[] args) {
        //随机生成中奖号码
        Scanner sc = new Scanner(System.in);
        Random r = new Random();
        int[] red = new int[6];
        int[] blue = new int[1];
        blue[0] = r.nextInt(16) + 1;//随机生成蓝球的号码

        for (int i = 0; i < red.length; ) {    //随机生成红球号码,且随机数不能重复
            int a = r.nextInt(33) + 1;
            boolean b = Shuijishupanduan(red, a);
            if (!b) {
                red[i] = a;
                i++;
            }
        }
        //用户输入自己的号码
        int[] arr = new int[6];
        int[] arr1 = new int[1];
        System.out.println("覃泺宇牌双色球,赢到手麻");
        int n = 1;
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请输入你的第" + n + "个红球的号码:");
            int shuru = sc.nextInt();
            arr[i] = shuru;
            n++;
        }
        System.out.println("请输入蓝球的号码:");
        int B = sc.nextInt();
        arr1[0] = B;
        //判断红、蓝球有几个和中奖号码相同的,红球和蓝球分开统计。

        int RED = xiangtong(red, arr);
        int BULE = xiangtong(blue, arr1);
        //根据统计的红球和蓝球相同的结果,分析所中的奖项,有普适性可以写成方法,只要输入红球和蓝球相同的个数就得结果
        jiang(RED, BULE);
    }

    //判断随机数是否相同的方法
    public static boolean Shuijishupanduan(int[] arr, int a) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == a) {
                return true;
            }
        }
        return false;
    }

    //判断两个数组有多少个相同的数据
    public static int xiangtong(int arr1[], int arr2[]) {
        int xiangtongshu = 0;
        for (int i = 0; i < arr1.length; i++) {
            if (arr2[i] == arr1[i]) {   //双色球的号码要相同,而且还要对应的位置也相同(也就是俩数组的相同索引的数据要一样)
                xiangtongshu++;
            }
        }
        return xiangtongshu;
    }

    //判断奖项
    public static void jiang(int r, int b) {
        if (r == 6 && b == 1) {
            System.out.println("恭喜你!中了一等奖,奖金1000万元!");
        } else if (r == 6 && b == 0) {
            System.out.println("恭喜你!中了二等奖,奖金500万元!");
        } else if (r == 5 && b == 1) {
            System.out.println("恭喜你!中了三等奖,奖金3000元!");
        } else if ((r == 5 && b == 0) || (r == 4 && b == 1)) {
            System.out.println("恭喜你!中了个四等奖,奖金200元!");
        } else if ((r == 4 && b == 0) || (r == 3 && b == 1)) {
            System.out.println("恭喜你!中了个五等奖,奖金10元");
        } else if ((r == 2 && b == 1) || (r == 1 && b == 1) || (r == 0 && b == 1)) {
            System.out.println("恭喜你!大怨种,中了六等奖,奖金5元");
        }
    }
}

 花了我打gogo的时间,弄个双色球模拟,总体不算太难,最麻烦的部分我还是感觉是那个随机数不能重复的部分,我想了一些时间。i++放在if语句里很精髓我感觉。

【用java写的】双色球中奖模拟器

我打的草稿。思路应该还是清晰的我认为。 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79500.html

(3)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!