双色球彩票系统完整版(JAVA实现)

案例说明:

投注号码由6个红色号码和1个蓝球号码组成。红色球号码从1-33中选择;蓝色球号码从1-16中选择。

案例分析:

  1. 先定义一个方法,用来创建中奖号码
  1. 再定义一个方法,用来设置用户的输出号码
  1. 判断用户的中奖情况
  1. 输出中奖金额

完整代码如下(含详细解释):

package com.heima.dome1;

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

public class text27 {
    public static void main(String[] args) {
        //分析:
        //1.先定义一个方法,用来创建中奖号码
        //2.再定义一个方法,用来设置用户的输出号码
        //3.判断用户的中奖情况
        //4.输出中奖金额
        //双色球

        //1.生成中奖号码

        int[] arr = creatNumber();
        System.out.println("=============================");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println(" ");
        System.out.println("==============================");
        //2.用户输入彩票号码

        int[] userArr = userNumber();
        //3.判断用户的中奖情况

        int redCount = 0;
        int blueCount = 0;
        //判断红球
        for (int i = 0; i < userArr.length - 1; i++) {
            int redNumber = userArr[i];
            for (int j = 0; j < arr.length - 1; j++) {
                if (redNumber == arr[j]) {
                    redCount++;
                    //如果找到了,那么后面的数字就没有必要继续比较
                    //跳出内循环,继续判断下一个红球是否中奖
                    break;
                }
            }
        }
        //判断篮球
        int blueNumber = userArr[userArr.length - 1];
        if (blueNumber == arr[arr.length - 1]) {
            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[] userNumber() {
        //创建数组用于添加用户购买的彩票号码
        //6个红球 1个蓝球
        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();
            //redNumber  在1~33 唯一不重复
            if (redNumber >= 1 && redNumber <= 33) {
                boolean flag = contains(arr, redNumber);
                if (!flag) {
                    //不存在重复
                    //有效的 可以添加到数组
                    arr[i] = redNumber;
                    i++;
                } else {
                    //存在重复 重新输入
                    System.out.println("当前红球号码已经存在,请重新输入:");
                }
            } else {
                System.out.println("当前红球号码超出范围");
            }
        }
        //让用户输入蓝球号码
        System.out.println("请输入蓝球号码:");
        int blueNumber = sc.nextInt();
        //1~16
        while (true) {
            if (blueNumber >= 1 && blueNumber <= 16) {
                arr[arr.length - 1] = blueNumber;
                break;
            } else {
                System.out.println("当前蓝球号码超出范围");
            }
        }
        return arr;
    }

    public static int[] creatNumber() {
        //创建数组用于添加中奖号码
        //6个红球 1个蓝球 数组长度为7
        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++;//号码添加成功后才+1
            }
        }
        //生成蓝球号码并添加到数组中
        int blueNumber = r.nextInt(16) + 1;
        arr[arr.length - 1] = blueNumber;
        return arr;
    }

    //用于判断号码是否在数组中存在
    public static boolean contains(int[] arr, int number) {
        for (int i = 0; i < arr.length-1; i++) {
            if (arr[i] == number) {
                return true;
            }
        }
        return false;
    }
}
运行结果如下:

猜你喜欢

转载自blog.csdn.net/m0_62869063/article/details/129696323