大乐透是否中奖计算

前些天突然心血来潮买了20块钱的大乐透,开奖之后发现一个一个的核对太累了,心想,这计算有没有中奖不就是很简单的if,else过程嘛。所有码起来

package com.example.demo.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class 大乐透中将计算 {

    public static Integer[][] 购买彩票数组 = {
            {2,4,13,16,19, 5,11},
            {11,16,21,25,35, 3,4},
            {15,19,24,33,34, 3,6},
            {1,10,27,32,35, 2,11},
            {5,17,21,22,25, 6,7},
            {1,15,20,24,25, 7,11},
            {1,3,12,30,33, 7,12},
            {2,12,17,20,22, 3,9},
            {3,6,7,23,31, 6,12},
            {2,12,14,18,22, 3,8}
    };

    public static Integer[] 中奖数组 = {9,23,25,27,33,6,12};


    public static void main(String[] args) {
        获取中奖信息(购买彩票数组,中奖数组);
    }

    public static void 获取中奖信息(Integer[][] 购买彩票数组, Integer[] 中奖数组) {
        List<Integer> 中奖前驱  = Arrays.asList(Arrays.copyOfRange(中奖数组,0,5));
        List<Integer> 中奖后驱 = Arrays.asList(Arrays.copyOfRange(中奖数组,5,7));
        List<String> 提示信息 = new ArrayList<>();
        for (int i = 1; i<=购买彩票数组.length; i++) {
            Integer []单条号码 = 购买彩票数组[i-1];
            Integer []前后驱中奖号码个数 = 获取单条彩票前后驱中奖号码个数(单条号码,中奖前驱,中奖后驱);
            计算几等奖(提示信息,i,前后驱中奖号码个数);
        }
        提示信息.forEach(System.out::println);
    }

    public static Integer[] 获取单条彩票前后驱中奖号码个数(Integer[] 单条号码,List<Integer> 中奖前驱,List<Integer> 中奖后驱){
        Integer []前后驱中奖号码个数 = new Integer[2];
        int 前驱中奖个数 = 0;
        int 后驱中奖个数 = 0;
        List<String> 提示信息 = new ArrayList<>();
        for (int i=0;i< 5; i++){
            Integer 号码 = 单条号码[i];
            if(中奖前驱.contains(号码)){
                前驱中奖个数++;
            }
        }
        for (int i=5;i< 7; i++){
            Integer 号码 = 单条号码[i];
            if(中奖后驱.contains(号码)){
                后驱中奖个数++;
            }
        }
        前后驱中奖号码个数[0] = 前驱中奖个数;
        前后驱中奖号码个数[1] = 后驱中奖个数;
        return 前后驱中奖号码个数;
    }

    public static void 计算几等奖(List<String> 提示信息, int 号码位置,Integer[] 前后驱中奖号码个数){
        int 符合要求总个数 = 前后驱中奖号码个数[0] + 前后驱中奖号码个数[1];
        if(符合要求总个数 < 3 && 前后驱中奖号码个数[1] < 2){
            提示信息.add(String.format("第%s条彩票没有中奖",号码位置));
        }else if(符合要求总个数 == 3 || (符合要求总个数 < 3 && 前后驱中奖号码个数[1] == 2)){
            提示信息.add(String.format("第%s条彩票中了九等奖:5元",号码位置));
        }else if(符合要求总个数 == 4 && 前后驱中奖号码个数[0] != 4){
            提示信息.add(String.format("第%s条彩票中了八等奖:15元",号码位置));
        }else if(符合要求总个数 == 4 && 前后驱中奖号码个数[0] == 4){
            提示信息.add(String.format("第%s条彩票中了七等奖:100元",号码位置));
        }else if(前后驱中奖号码个数[0] == 3 && 前后驱中奖号码个数[1] == 2){
            提示信息.add(String.format("第%s条彩票中了六等奖:200元",号码位置));
        }else if(前后驱中奖号码个数[0] == 4 && 前后驱中奖号码个数[1] == 1){
            提示信息.add(String.format("第%s条彩票中了五等奖:300元",号码位置));
        }else if(前后驱中奖号码个数[0] == 4 && 前后驱中奖号码个数[1] == 2){
            提示信息.add(String.format("第%s条彩票中了四等奖:3000元",号码位置));
        }else if(前后驱中奖号码个数[0] == 5 && 前后驱中奖号码个数[1] == 0){
            提示信息.add(String.format("第%s条彩票中了三等奖:10000元",号码位置));
        }else if(前后驱中奖号码个数[0] == 5 && 前后驱中奖号码个数[1] == 1){
            提示信息.add(String.format("第%s条彩票中了二等奖:浮动奖金,最多500万",号码位置));
        }else if(前后驱中奖号码个数[0] == 5 && 前后驱中奖号码个数[1] == 2){
            提示信息.add(String.format("第%s条彩票中了一等奖:浮动奖金,牛逼",号码位置));
        }else {
            提示信息.add(String.format("第%s条彩票没有中奖",号码位置));
        }
    }
}

嗯哼,写的过程中,发现中奖是真的难,前驱号码错一个,最多就4等奖,3000块,前驱要一个不错,才能中三等及以上大奖。。

前驱35个数字选五个,还得全中,计算器拿过来算算,感觉不如天上掉钱来的概率高。

拜拜咯您嘞,我还是老老实实写代码吧

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值