Java案例----双色球中奖分析

题目如下:

 

 由题意,我将构造满足以下要求的五个方法对题目进行实现:

1.对中奖号码的确定。

2.对重复号码的判定。

3.用户输入自己的中奖号码进行验证。

4.判断中奖球的次数以及球的颜色。

5.判断中奖的金额。

以下进行逐个实现:

在开始之前,我定义了几个全局的静态变量,有利于数据的传递

static Random r = new Random();//随机数生成类
static Scanner sc = new Scanner(System.in);//键盘的录入类
static int redCount = 0,blueCount = 0;//前为记录红球中奖的次数,后为记录蓝球中奖的次数

1.对中奖号码的确定。

public static int[] Create(){
        int[]arr = new int[7];
        //以下为生成红色球的中奖号码
        for (int i = 0; i < arr.length-1; ) {
            int redNum = r.nextInt(33)+1;
        //以下的ifExist函数会在下面补充,是对重复元素的判断!
            if(ifExist(arr,redNum)){
                continue;
            }
            else {
                arr[i] = redNum;
                i++;
            }
        }
        //以下为生成蓝色球的中奖号码
        int blueNum = r.nextInt(16)+1;
        arr[arr.length-1] = blueNum;
        return arr;
    }

2.对重复号码的判定。

//传入的参数为已经录入数据的数组,以及需要判断是否存在的数字    
public static boolean ifExist(int[]arr,int ra){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == ra){
                return true;//存在则返回是
            }
        }
        return false;//如果代码运行到此处则说明,没有存在重复,则返回否
    }

3.用户输入自己的中奖号码进行验证。

    public static int[] userNum(){
        int[]arr = new int[7];
        System.out.println("请输入你的中奖号码!");
        for (int i = 0; i < arr.length; ) {
//此处的减一是为区分红球和蓝球
            if(i<arr.length-1){
                System.out.println("您现在正在输入第"+(i+1)+"个红色球");
                int rednum = sc.nextInt();
//需对输入的号码控制在1~33才能符合题目的要求!
                if(rednum>0 && rednum<34){
                    if(ifExist(arr,rednum)){
                        System.out.println("您输入的号码已经存在,请重新输入!");
                    }
                    else{
                        arr[i] = rednum;
                        i++;
                    }
                }
                else
                    System.out.println("您输入的第"+(i+1)+"个红球超过了范围");

            }
//以下对蓝球进行录入操作
            else {
                System.out.println("您现在输入的是蓝球的号码");
                int blueNum = sc.nextInt();
//控制蓝球在1~16的范围内符合题目的要求
                if(blueNum>0 && blueNum<17){
                    arr[i] = blueNum;
                    i++;
                }
                else
                    System.out.println("你输入的超过了蓝球的范围!");
            }
        }
        return arr;
    }

4.判断中奖球的次数以及球的颜色。

public static String ifWin(int[] winingNum,int[] userNum){
        for (int i = 0; i < userNum.length; i++) {
            if(i<userNum.length-1){
//这里继续运用上面的存在重复元素方法,对用户输入的元素在中奖数组里面判断是否重复
//如果是,则就是中奖了,则对红球的中奖次数进行加一操作。
//如果不是则会随着i++而跳过该元素,继续判断接下来的元素。
                if(ifExist(winingNum,userNum[i])){
                    redCount++;
                }
            }
//以下是对蓝球的中奖次数进行判断,因为蓝球存在数组的末尾位置,故位置为(arr.length-1)。
            else {
                if(userNum[userNum.length-1] == winingNum[winingNum.length-1])
                    blueCount++;
            }
        }
//这里直接返回结果字符串,在主函数中直接输出即可!
        return "此次中奖结果为\t红球:"+redCount+"个,"+"蓝球:"+blueCount+"个";
    }

5.判断中奖的金额。

//在上述方法就会得到具体的各球中奖次数,然后就可以进行判断具体奖金
//因为我设置了全局变量,所以该方法并不需要传入如何的参数。
    public static String judgeBonus(){
        if(redCount == 0 && blueCount == 1 || redCount == 1 && blueCount == 1 || redCount == 2 && blueCount == 1 )
            return "获得5元奖金!";
        else if(redCount == 3 && blueCount == 1 || redCount == 4 && blueCount == 0)
            return "获得10元奖金!";
        else if(redCount == 4 && blueCount == 1 || redCount == 5 && blueCount == 0)
            return "获得200元奖金!";
        else if(redCount == 5 && blueCount == 1)
            return "获得3000奖金!";
        else if(redCount == 6 && blueCount == 0)
            return "获得5000000奖金!";
        else if(redCount == 6 && blueCount == 1)
            return "获得10000000奖金!";
        else
            return "没有该奖项!";
//对中奖次数进行简单的逻辑判断,便可以进行奖金的确定。
    }

 以上便可以实现双色球彩票系统的具体流程,完整代码如下:

package com.wxy.demo1;
import java.util.Scanner;
import java.util.Random;
public class 双色球系统 {
    static Random r = new Random();
    static Scanner sc = new Scanner(System.in);
    static int redCount = 0,blueCount = 0;
    public static void main(String[] args) {
        int[]winningNum = new int[7];
        int[]userNum = new int[7];
        winningNum = Create();
        userNum = userNum();
        System.out.println(ifWin(winningNum,userNum));
        System.out.println(judgeBonus());
    }
    public static int[] Create(){
        int[]arr = new int[7];
        //以下为生成红色球的中奖号码
        for (int i = 0; i < arr.length-1; ) {
            int redNum = r.nextInt(33)+1;
            if(ifExist(arr,redNum)){
                continue;
            }
            else {
                arr[i] = redNum;
                i++;
            }
        }
        //以下为生成蓝色球的中奖号码
        int blueNum = r.nextInt(16)+1;
        arr[arr.length-1] = blueNum;
        return arr;
    }
    public static boolean ifExist(int[]arr,int ra){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == ra){
                return true;
            }
        }
        return false;
    }
    public static int[] userNum(){
        int[]arr = new int[7];
        System.out.println("请输入你的中奖号码!");
        for (int i = 0; i < arr.length; ) {
            if(i<arr.length-1){
                System.out.println("您现在正在输入第"+(i+1)+"个红色球");
                int rednum = sc.nextInt();
                if(rednum>0 && rednum<34){
                    if(ifExist(arr,rednum)){
                        System.out.println("您输入的号码已经存在,请重新输入!");
                    }
                    else{
                        arr[i] = rednum;
                        i++;
                    }
                }
                else
                    System.out.println("您输入的第"+(i+1)+"个红球超过了范围");

            }
            else {
                System.out.println("您现在输入的是蓝球的号码");
                int blueNum = sc.nextInt();
                if(blueNum>0 && blueNum<17){
                    arr[i] = blueNum;
                    i++;
                }
                else
                    System.out.println("你输入的超过了蓝球的范围!");
            }
        }
        return arr;
    }
    public static String ifWin(int[] winingNum,int[] userNum){
        for (int i = 0; i < userNum.length; i++) {
            if(i<userNum.length-1){
                if(ifExist(winingNum,userNum[i])){
                    redCount++;
                }
            }
            else {
                if(userNum[userNum.length-1] == winingNum[winingNum.length-1])
                    blueCount++;
            }
        }
        return "此次中奖结果为\t红球:"+redCount+"个,"+"蓝球:"+blueCount+"个";
    }
    public static String judgeBonus(){
        if(redCount == 0 && blueCount == 1 || redCount == 1 && blueCount == 1 || redCount == 2 && blueCount == 1 )
            return "获得5元奖金!";
        else if(redCount == 3 && blueCount == 1 || redCount == 4 && blueCount == 0)
            return "获得10元奖金!";
        else if(redCount == 4 && blueCount == 1 || redCount == 5 && blueCount == 0)
            return "获得200元奖金!";
        else if(redCount == 5 && blueCount == 1)
            return "获得3000奖金!";
        else if(redCount == 6 && blueCount == 0)
            return "获得5000000奖金!";
        else if(redCount == 6 && blueCount == 1)
            return "获得10000000奖金!";
        else
            return "没有该奖项!";
    }
}

实现效果图:

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值