双色球系统开发

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

/**
 * @author 南月
 * @Date 2023/9/16&13:51
 * 双色球系统的开发
 * 方法中的return语句用于从当前方法中返回一个值,并且一旦执行return语句,方法的执行将立即终止,
 * 不会继续执行方法中return语句之后的代码。这意味着在方法中使用return语句后,方法将不再执行剩余的代码。
 * 动态初始化的数组长度等于数组的最大索引值+1
 * 任务分离(填空式编程),一行一行的执行,量化思维,面向对象是计算机编程重要思维。
 */
public class TestSystemKaiFa {
    public static void main(String[] args) {
        //用于投注一组号码,并返回投注的号码
        int[] numbers = touzhu();
        printArr(numbers);
        //系统生成一组号码,并返回中奖的号码
        int[] numbers1=xitong();
        printArr(numbers1);
        //比较两组号码,判断中奖情况,返回中奖情况
        bijiao(numbers,numbers1);
    }

    private static void bijiao(int[] numbers, int[] numbers1) {
        //判断命中情况,量化思维
        //红球命中数量
        int redCount = 0;
        //蓝球命中数量
        int buleCount = 0;
        //先处理简单的,蓝球只有一个
        buleCount = numbers[6]==numbers1[6]?1:0;
        //再处理复杂的
        //判断数组前六个元素,相等的个数,用循环
        //外循环取出选中的号码
        for (int i = 0; i < numbers.length-1; i++) {
            //内循环取出系统产生的号码,一一与外循环选中的号码做对比
            for (int i1 = 0; i1 < numbers1.length; i1++) {
                //记录相等个数
                if(numbers[i]==numbers1[i1]){
                    redCount++;
                    //因为没有重复的号码,故直接直接break;避免多余的访问,造成性能的浪费。
                    break;
                }
            }
        }
        //判断中奖情况
        if(redCount==6&&buleCount==1){
            System.out.println("恭喜您命中6个红球,1个蓝球,中奖1000万!");
        }else if(redCount==6&&buleCount==0){
            System.out.println("恭喜您命中6个红球,0个蓝球,中奖500万!");
        }else if(redCount==5&&buleCount==1){
            System.out.println("恭喜您命中5个红球,1个蓝球,中奖3000元!");
        }else if(redCount==4&&buleCount==1){
            System.out.println("恭喜您命中4个红球,1个蓝球,中奖200元!");
        }else if(redCount==5&&buleCount==0){
            System.out.println("恭喜您命中5个红球,0个蓝球,中奖200元!");
        }else if(redCount==4&&buleCount==0){
            System.out.println("恭喜您命中4个红球,0个蓝球,中奖10元!");
        }else if(redCount==3&&buleCount==1){
            System.out.println("恭喜您命中3个红球,1个蓝球,中奖10元!");
        }else if(buleCount==1){
            System.out.println("恭喜您命中一颗蓝球,中奖5元!");
        }else {
            System.out.println("非常感谢您的支持,福彩的小姐姐欢迎您下次再来!");
        }
    }

    private static int[] xitong() {
        //用数组来存这个系统生成的号码
        int[] numbers = new int[7];
        //先生成红球号码
        Random random = new Random();
        for (int i=0;i<numbers.length;i++) {
            while (true) {
                int number = random.nextInt(33)+1;
                //判断生成的号码是否已存在
                if(!exist(number,numbers)){
                    numbers[i] =number;
                    break;
                }
            }
        }
        //在生成蓝球
        numbers[6] = random.nextInt(16)+1;
        return numbers;
    }

    private static void printArr(int[] numbers) {
        //打印数组
        System.out.println("================================================");
        System.out.print("[");
        for (int i = 0; i < numbers.length; i++) {
            System.out.print((i==numbers.length-1)?numbers[i]:numbers[i]+",");
        }
        System.out.println("]");
        System.out.println("=================================================");

    }

    //用于投注一组号码,并返回投注的号码
    //号码用数组来存储
    public static int[] touzhu(){
        //号码共七位,6红+1蓝
        int[] haoma = new int[7];
        //红球和篮球分开处理
        //先处理红球
        //遍历数组的前6个元素
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < haoma.length-1; i++) {
            //号码由用户自己输入,输入动作由一个死循环控制
            //先输入红球
            while (true) {
                System.out.println("请输入您的第"+(i+1)+"个红球号码(1-33,不能重复):");
                int number = scanner.nextInt();
                //红球号码在1——33之间
                if(number<1||number>33)
                {
                    System.out.println("对不起您输入的红号码不在(1——33)之间,请重新输入:");
                }else {
                    //去重
                    if (!exist(number,haoma)) {
                        haoma[i]=number;
                        break;
                    }
                }
            }
        }
        while (true) {

            System.out.println("请输入您的蓝球号码(1—16):");
            int number1 = scanner.nextInt();
            if(number1<1||number1>16)
            {
                System.out.println("对不起,您输入错误,请重新输入:");
            }else {
                haoma[6]=number1;
                break;
            }
        }
        return haoma;
    }

    private static boolean exist(int number, int[] haoma) {
        for (int i = 0; i < haoma.length-1; i++) {
            if(haoma[i]==0){
                break;
            }
            if(number==haoma[i]){
                return true;
//                java中return语句返回值后,方法不在执行
            }
        }
        return false;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值