12.text--双色球系统

黑马 ---- 双色球系统

投注号码由6个红色球号码和一个蓝色球号码组成

红色球号码从1-33中选择,蓝色球号码从1-16中选择

我自己写的:

public static void main(String[] args) {
    Scanner s = new Scanner(System.in);

    //接收玩家号码
    int[] userRed = new int[6];
    System.out.println("请输入您的红球号码!");
    //存放在userRed数组中(该数组是用户投注的号码)
    for (int i = 0; i < 6;) {
        System.out.println("第" + (i+1) + "个号码:");
        int userRedBall = s.nextInt();
        if(userRedBall >= 1 && userRedBall <= 33){
            userRed[i] = userRedBall;
            i++;
        }else {
            System.out.println("红球输入有误,请重新输入!");
        }
    }

    int userBlue;
    while(true){
        System.out.println("请输入您的蓝球号码!");
        int userBlueBall = s.nextInt();
        if(userBlueBall >= 1 && userBlueBall <= 16){
            userBlue = userBlueBall;
            break;
        }else{
            System.out.println("蓝球输入有误,请重新输入!");
        }
    }
    
    //提供玩家号码给方法体进行比较,并返回中奖结果的数组
    int[] userWinRed = getRed(userRed); //该数组存放用户选择的红球号码的中奖号码
    boolean flag = getBlue(userBlue);
    int bingoRed = 0;

    for (int i = 0; i < userWinRed.length; i++) {
        if(userWinRed[i] != 0){
            bingoRed++; //记录红球中奖数量
        }
    }
    //若红球中奖数不为0,打印 红球 中奖号码
    if(bingoRed != 0){
        System.out.print("您红球的中奖号码为:");
        for (int i = 0; i < userWinRed.length; i++) {
            if(userWinRed[i] != 0){
                System.out.print(userWinRed[i] + " ");
            }
        }
        System.out.println();
    }else{
        System.out.println("很可惜您的红球没有中奖!");
    }

    //打印出蓝球中奖结果
    if(flag){
        System.out.println("恭喜您蓝球中奖啦!");
    }else{
        System.out.println("很可惜您的蓝球没有中奖!");
    }

    //根据方法返回的玩家中奖输出打印
    if(bingoRed == 6){
        if(flag){
            System.out.println("恭喜您中奖1000万!!!");
        }else{
            System.out.println("恭喜您中奖500万!!!");
        }
    }else if(bingoRed == 5){
        if(flag){
            System.out.println("恭喜您中奖3000元!");
        }else{
            System.out.println("恭喜您中奖200元!");
        }
    }else if(bingoRed == 4){
        if(flag){
            System.out.println("恭喜您中奖200元!");
        }else{
            System.out.println("恭喜您中奖10元");
        }
    }else if(bingoRed == 3){
        if(flag){
            System.out.println("恭喜您中奖10元");
        }else {
            System.out.println("很可惜您没有中奖!");
        }
    }else if(bingoRed == 2){
        if(flag){
            System.out.println("恭喜您中奖5元");
        }else{
            System.out.println("很可惜您没有中奖!");
        }
    }else if(bingoRed == 1){
        if(flag){
            System.out.println("恭喜您中奖5元");
        }else{
            System.out.println("很可惜您没有中奖!");
        }
    }else if(bingoRed == 0){
        if(flag){
            System.out.println("恭喜您中奖5元");
        }else{
            System.out.println("很可惜您没有中奖!");
        }
    }

    s.close();
}

public static int[] getRed(int[] userRed){
    //生成随机数
    Random r = new Random();

    //定义一个数组,存放给出的红球随机中奖号码 redPrize
    int[] redPrize = new int[6];
    for (int i = 0; i < redPrize.length;) {
        int num = r.nextInt(33) + 1;
        boolean flag = contains(redPrize,num);
        if(!flag){
            redPrize[i] = num;
            i++;
        }
    }

    //打印红球中奖的号码
    System.out.print("红球的中奖号码是");
    for (int i = 0; i < redPrize.length; i++) {
        System.out.print(redPrize[i] + " ");
    }
    System.out.println();

    //定义一个数组,存放用户投注号码是否中奖,若中奖,存放该数组 userWinRed
    int[] userWinRed = new int[6];
    int count = 0;
    for (int i = 0; i < redPrize.length; i++) {
        for (int j = 0; j < userRed.length; j++) {
            if(userRed[j] == redPrize[i]){
                userWinRed[count] = userRed[j];
                count++;
            }
        }
    }

    return userWinRed;
}

public static boolean getBlue(int userBlue){
    //生成随机数,比较用户投注的蓝球号码是否中奖
    Random r = new Random();
    int bluePrize = r.nextInt(16) + 1;

    //中奖返回true,否则false
    if(userBlue == bluePrize){
        return true;
    }
    return false;
}

//判断数字是否存在数组中
public static boolean contains(int[] arr,int number){
    for (int i = 0; i < arr.length; i++) {
        if(arr[i] == number){
            return true;
        }
    }
    return false;
}

黑马写的:

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("===========================");

    //用户输入彩票号码(红球 + 蓝球)
    int[] userInputArr = userInputNumber();

    //判断用户中奖情况
    int redCount = 0;
    int blueCount = 0;

    //判断红球
    for (int i = 0; i < userInputArr.length - 1; i++) {
        int redNumber = userInputArr[i];
        for (int j = 0; j < arr.length - 1; j++) {
            if(redNumber == arr[j]){
                redCount++;
                //如果重复,则跳出内循环
                break;
            }
        }
    }

    //判断蓝球
    int blueNumber = userInputArr[userInputArr.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("10!");
    }else {
        System.out.println("谢谢参与!");
    }
}

public static int[] userInputNumber(){
    //创建数组用于添加用户购买的彩票号码
    int[] arr = new int[7];

    Scanner s = new Scanner(System.in);

    //用户输入红球号码
    for (int i = 0; i < 6; ) {
        System.out.println("请输入第" + (i+1) +  "个红球号码");
        int redNumber = s.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("当前红球号码超出范围!");
        }
    }

    //用户输入蓝球号码
    System.out.println("请输入蓝球号码:");
    while (true) {
        int blueNumber = s.nextInt();
        if(blueNumber >= 1 && blueNumber <= 16){
            arr[arr.length - 1] = blueNumber;
            break;
        }else {
            System.out.println("当前蓝球号码超出范围!");
        }
    }

    s.close();

    return arr;
}

public static int[] createNumber(){
    //1.创建数组用于添加中奖号码,6个红球,1个蓝球,数组长度为7
    int[] arr = new int[7];

    //2.随机生成号码并添加到数组当中,红球不能重复,蓝球可以跟红球号码重复
    //生成红球号码
    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 i = 0; i < arr.length; i++) {
        if(arr[i] == number){
            return true;
        }
    }
    return false;
}
posted on 2023-03-20 08:47  小黑确实不黑  阅读(54)  评论(0编辑  收藏  举报