封装getBall方法,随机生成一组双色球的中奖号码:


5. 封装getBall方法,随机生成一组双色球的中奖号码:
	 * 红球为1-33中随机6个不重复的数字
	 * 蓝球为1-16中随机一个数字
在main方法中接收用户输入的双色球号码,判断用户是否中奖,中奖规则如下:
	 * 一等奖:7个号码相符(6个红色球号码和1个蓝色球号码)(红色球号码顺序不限,下同)
	 * 二等奖:6个红色球号码相符;
	 * 三等奖:5个红色球号码和1个蓝色球号码相符;
	 * 四等奖:5个红色球号码,或4个红色球号码和1个蓝色球号码相符;
	 * 五等奖:4个红色球号码,或3个红色球号码和1个蓝色球号码相符;
	 * 六等奖:1个蓝色球号码相符(有无红色球号码相符均可)。
	 
	 

```css
package com.huacit.day05;

import org.junit.Test;

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

/**
 * @author yyc
 * 5. 封装getBall方法,随机生成一组双色球的中奖号码:
 * 	 * 红球为1-33中随机6个不重复的数字
 * 	 * 蓝球为1-16中随机一个数字
 * 在main方法中接收用户输入的双色球号码,判断用户是否中奖,中奖规则如下:
 * 	 * 一等奖:7个号码相符(6个红色球号码和1个蓝色球号码)(红色球号码顺序不限,下同)
 * 	 * 二等奖:6个红色球号码相符;
 * 	 * 三等奖:5个红色球号码和1个蓝色球号码相符;
 * 	 * 四等奖:5个红色球号码,或4个红色球号码和1个蓝色球号码相符;
 * 	 * 五等奖:4个红色球号码,或3个红色球号码和1个蓝色球号码相符;
 * 	 * 六等奖:1个蓝色球号码相符(有无红色球号码相符均可)。
 */
public class Excise_day05_2 {
    public static void main(String[] args) {
        //1.声明Scanner对象用于接收用户输入
        Scanner input = new Scanner(System.in);
        int[] userBalls = new int[7];
        //2.循环接收用户输入的红球号存放入数组中
        for (int i = 0; i < userBalls.length - 1; i++){
            System.out.println("请输入第"+ (i+1) + "个红球号码:");
            userBalls[i] = input.nextInt();
        }
        //3.用户输入蓝球号码
        System.out.println(" 请输入蓝色球号码:");
        userBalls[userBalls.length - 1] = input.nextInt();

        //4.对用户输入的红球号码进行排序
        Arrays.sort(userBalls);
        //5.获取中奖号码数组
        int[] luckyBalls = getBall();
        System.out.println("luckyBalls : " + Arrays.toString(luckyBalls));
        System.out.println( "userBalls : " +Arrays.toString( userBalls));
        //6.记录红球号码中奖个数
        int redCount = 0;
        for (int i = 0; i < userBalls.length - 1; i++){
            if (userBalls[i] == luckyBalls[i]){
                redCount++;
            }
        }
        //7.记录蓝色球中奖个数, 0 或 1;
        int blueCount = 0;
        if (userBalls[userBalls.length - 1] == luckyBalls[luckyBalls.length - 1]){
            blueCount ++;
        }

        /* 一等奖:7个号码相符(6个红色球号码和1个蓝色球号码)(红色球号码顺序不限,下同)
         * 二等奖:6个红色球号码相符;
         * 三等奖:5个红色球号码和1个蓝色球号码相符;
         * 四等奖:5个红色球号码,或4个红色球号码和1个蓝色球号码相符;
         * 五等奖:4个红色球号码,或3个红色球号码和1个蓝色球号码相符;
         * 六等奖:1个蓝色球号码相符(有无红色球号码相符均可)。
        * */
         if (redCount + blueCount == 7){
            System.out.println("一等奖");
        } else if(redCount == 6){
            System.out.println("二等奖");
        } else if (redCount == 5 && blueCount == 1){
            System.out.println(" 三等奖");
        } else if ( redCount == 5 || redCount == 4 && blueCount == 1){
            System.out.println("四等奖");
        } else if (redCount == 3 || 4 == redCount && 1 == blueCount){
            System.out.println("五等奖");
        } else if (blueCount == 1){
            System.out.println("六等奖");
        }else{
             System.out.println("亲!与幸运擦边而过呢!");
         }
    }

    public  static int[] getBall(){
        /*
        * 1.定义一个红球池,随机产生1-33中随机6个不重复的数字
        * 2.蓝球为1-16中随机一个数字
        * 3.把生成的红球和蓝球装在数组中,形参双色球号码组
         * */
        //1.定义一个红球数组,随机产生1-33中随机6个不重复的数字
        Random random = new Random();
        int[] redBalls = new int[6];
        for (int i = 0; i < redBalls.length;){
            redBalls[i] = random.nextInt(34)+1;
            for (int j = 0; j < i; j++){
                //如果新生成的红球数组中已经有相同的号,i--重新生成。
                if (redBalls[i] == redBalls[j]){
                    i--;
                }
            }
            i++;
        }
        //对红球排序
        Arrays.sort(redBalls);

        //2、蓝球为1-16中随机一个数字
        int blueBall = random.nextInt(17);

        //3、把生成的红球和蓝球装在数组中,形参双色球号码组
        int[] luckyBalls = Arrays.copyOf(redBalls,7);
        luckyBalls[luckyBalls.length - 1] = blueBall;
        //System.out.println(Arrays.toString(redBalls));
        return luckyBalls;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值