用Java实现简单的双色球摇奖功能(加入了详细的解析过程与注释,运行成功无问题)

Java实现双色球

题目如下:

int [] a =[1,2,3,...,33];//红球
int [] b = [1,2,3,...16];//蓝球
  1. 从a数组中取6个球(不可重复)
  2. 从b数组中取1个球
  3. 将取出来的球放入数组c中,并且将前6位从小到大排序

网上实现这类的代码很多,但是几乎都是错误的,看了很多发现去重的代码都出现了很大了问题,要么会出现数字0,要么会出现重复数字。由于考虑到这个题目练习有些同学还没有学到后面的知识,所以只用了双重的for循环来实现,来看代码吧

注意:考虑到有些同学debug没有学会,所以我将每一个步骤都加入了输出结果,可以清楚的看到循环的过程。如果要使用代码,只需要去掉System.out.println就可以了。

package com.data.asset.utils;

import java.util.Arrays;
import java.util.Random;

/**
 * @author yhs
 * @date 2020/7/19 - 10:39
 */
public class Test {
    /**
     * int [] a =[1,2,3,...,33];//红球
     * int [] b = [1,2,3,...16];//蓝球
     * 从a数组中取6个球(不可重复)
     * 从b数组中取1个球
     * 将取出来的球放入数组c中,并且将前6位从小到大排序
     *
     * @author yhs
     * @updateTime 2020/7/20 11:09
     */
    public static void main(String[] args) {
        //红球池
        int[] redpool = new int[33];
        for (int i = 0; i < 33; i++) {
            redpool[i] = i + 1;
        }

        //蓝球池
        int[] bluepool = new int[16];
        for (int i = 0; i < 16; i++) {
            bluepool[i] = i + 1;
        }

        Random r = new Random();
        int[] red = new int[6];
        //循环6次,每一次应该随机生成一个红球数字
        for (int i = 0; i < 6; i++) {
            //r.nextInt(33)生成0-32的数字,selectNum对应redpool里面的下标0-32对应的球
            int selectNum = redpool[r.nextInt(33)];
            System.out.println("选择的球是" + selectNum);
            //先赋值再判断是否重复
            red[i] = selectNum;
            for (int j = 0; j < i ; j++) {
                System.out.println("j值:" + j +",i值:" + i);
                if (red[j] == red[i]) {
                    //有相等的,重新生成数字
                    System.out.println("出现重复数字,与red[" + j + "]=" + red[j] + "重复");
                    //重新选球,循环减1
                    i--;
                    break;
                }
            }
        }
        //数组排序
        Arrays.sort(red);

        int blue = bluepool[new Random().nextInt(16)];


        System.out.println("输出的红球为" + Arrays.toString(red));
        System.out.println("输出的蓝球为" + blue);

        //创建新的数组c,放入6个红球们和1个蓝球
        int[] redAndBlue = new int[7];
        for(int x = 0; x < red.length; x++){
            redAndBlue[x] = red[x];
        }
        redAndBlue[6] = blue;
        System.out.println("双色球的组合数字为:" + Arrays.toString(redAndBlue));


    }
}

输出的效果如下:
用Java实现简单的双色球摇奖功能(加入了详细的解析过程与注释,运行成功无问题)_第1张图片
如果有问题,欢迎指出~

你可能感兴趣的:(Java基础练习)