前些天突然心血来潮买了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个数字选五个,还得全中,计算器拿过来算算,感觉不如天上掉钱来的概率高。
拜拜咯您嘞,我还是老老实实写代码吧