前言
这篇文章和大家分享一下,这双色球系统的原理与代码实现,在此希望大家“珍爱生命,远离赌博”
了解原理后,希望家人们可以感受,中奖希望之渺茫!!!
一、了解双色球的规则
规则:投注6个红球(红球数字在1~33),一个蓝球(蓝球数字在1~16),
一等奖 :中6个红球1个蓝球
二等奖 :中6个红球0个蓝球
三等奖 :中5个红球1个蓝球
四等奖 :中5个红球0个蓝球
中4个红球1个蓝球
五等奖 :中4个红球0个蓝球
中3个红球1个蓝球
六等奖 :中2个红球1个蓝球
中1个红球1个蓝球
中0个红球1个蓝球
二、分析问题
了解完规则之后,家人们是不是有了大概的逻辑思路了呢。
这个问题简单来讲:只需要分为三步就可以完成,
1、首先:我们随机生成一串中奖号码
2、然后:键盘录入我们自己购买的中奖号码;
3、最后:是不是就只需要一判断有没有中奖就结束了
接下来我们就一步一步来用代码进行实现,有idea的家人可以和主包一起来爽一下
三、代码实现
1、随机生成一串中奖号码
随机生成一串中奖号码,想都不用想,我们肯定要用到Random了,但是这一串号码,我们得找个地方,给他存起来,因为我们只知道这串中奖号码有7位,所以我们首先给他定义一个动态数组
int []arr=new int[7];
接下来我们就可以使用我们亲爱的Random来new一下啦
Random r=new Random();
好了,new完之后我们就要获取红球和蓝球上的号码了,但是主包介绍规则时少了一条:
红球是不能重复得 比如1 2 3 4 5 6 但是蓝球得号码是可以和红球重复的
所以我们 先搞个判断方法,看一下这个数组里是不是已经存在这个数
public static boolean contains(int[]arr,int number){
for (int i = 0; i < arr.length; i++) {
if (arr[i]==number){
return true;
}
}
return false;
}
现在我们就可以来获取6个红球的号码啦。直接就是一个for循环
for (int i = 0; i < 6;) {
int rednumber= r.nextInt(33)+1;
boolean flag= contains(arr,rednumber);
if (!flag){
arr[i]=rednumber;
i++;
}
}
蓝球就一个直接获取一手,返回到数组中
int bluenumder=r.nextInt(16)+1;
arr[arr.length-1]=bluenumder;
return arr;
到这我们第一部分就完成喽
2、键盘录入我们自己购买的中奖号码
同样的步骤:先得有一个数组我们才能得到号码,所以我们先创建一个动态数组
int arr[]=new int[7];
接下来我们就不使用Random,得使用Scanner这位好伙伴喽
Scanner sc=new Scanner(System.in);
接下来就输入你的号码喽
在此处我们需要加入if判断,超出范围或者重复就不能放入数组中去
先输入红球号码
for (int i = 0; i < 6;) {
System.out.println("请输入第"+(i+1)+"个红球号码(1-33)");
int rednumber=sc.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("当前红球号码超出范围");
}
}
接下来输入蓝球,同样的超出范围或者重复是不能放入数组中去哒
while (true) {
System.out.println("请输入蓝球号码(1-16)");
int bluenumber= sc.nextInt();
if (bluenumber>=1 && bluenumber<=16){
arr[arr.length-1]=bluenumber;
break;
}else {
System.out.println("当前蓝球号码超出范围");
}
}
return arr;
3、判断有没有中奖
我们先建立一个统计数变量,来统计中奖个数
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++;
}
好了我们可以打印输出一下
System.out.println("红球中了"+ redcount+"个");
System.out.println("蓝球中了"+ bluecount+"个");
接下来我们用if来将结果按照对应的规则输出一下
主包给你们把奖池扩大
if (redcount==6 && bluenumber==1){
System.out.println("恭喜你,中奖100万");
} else if (redcount==6 && bluenumber==0) {
System.out.println("恭喜你,中奖80万");
}else if (redcount==5 && bluenumber==1) {
System.out.println("恭喜你,中奖60万");
} else if ((redcount==5 && bluenumber==0) ||(redcount==4 && bluenumber==1) ){
System.out.println("恭喜你,中奖30000");
} else if ((redcount==4 && bluenumber==0) ||(redcount==3 && bluenumber==1) ) {
System.out.println("恭喜你,中奖1000");
} else if((redcount==2 && bluenumber==1) ||(redcount==1 && bluenumber==1)||
(redcount==0 && bluenumber==1) ){
System.out.println("恭喜你,中奖50");
}else {
System.out.println("谢谢惠顾");
}
四、整体代码
import java.util.Random;
import java.util.Scanner;
public class twocolourball {
public static void main(String[] args) {
/*规则:
一等奖 :中6个红球1个蓝球
二等奖 :中6个红球0个蓝球
三等奖 :中5个红球1个蓝球
四等奖 :中5个红球0个蓝球
中4个红球1个蓝球
五等奖 :中4个红球0个蓝球
中3个红球1个蓝球
六等奖 :中2个红球1个蓝球
中1个红球1个蓝球
中0个红球1个蓝球
*/
//1、生成中奖方法
int[] arr=creatNumber();
/*for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
*/
System.out.println(" ");
//2、用户输入号码
int []userInputArr=userInputNumber();
/*for (int i = 0; i < userInputArr.length; i++) {
System.out.println(userInputArr[i]);
}
*/
//判断是否中奖
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++;
}
System.out.println("红球中了"+ redcount+"个");
System.out.println("蓝球中了"+ bluecount+"个");
if (redcount==6 && bluenumber==1){
System.out.println("恭喜你,中奖100万");
} else if (redcount==6 && bluenumber==0) {
System.out.println("恭喜你,中奖80万");
}else if (redcount==5 && bluenumber==1) {
System.out.println("恭喜你,中奖60万");
} else if ((redcount==5 && bluenumber==0) ||(redcount==4 && bluenumber==1) ){
System.out.println("恭喜你,中奖30000");
} else if ((redcount==4 && bluenumber==0) ||(redcount==3 && bluenumber==1) ) {
System.out.println("恭喜你,中奖1000");
} else if((redcount==2 && bluenumber==1) ||(redcount==1 && bluenumber==1)||(redcount==0 && bluenumber==1) ){
System.out.println("恭喜你,中奖50");
}else {
System.out.println("谢谢惠顾");
}
}
public static int[] userInputNumber(){
int arr[]=new int[7];
Scanner sc=new Scanner(System.in);
//输入红球号码
for (int i = 0; i < 6;) {
System.out.println("请输入第"+(i+1)+"个红球号码(1-33)");
int rednumber=sc.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("当前红球号码超出范围");
}
}
//输入蓝球号码
while (true) {
System.out.println("请输入蓝球号码(1-16)");
int bluenumber= sc.nextInt();
if (bluenumber>=1 && bluenumber<=16){
arr[arr.length-1]=bluenumber;
break;
}else {
System.out.println("当前蓝球号码超出范围");
}
}
return arr;
}
public static int[] creatNumber(){
//1 创建数组来存储中奖号码
//6个红球,1个蓝球
int []arr=new int[7];
//2、随机生成中奖号码并存在数组中
//红球 不能重复 123456
//蓝球 可以和红球重复
//生成红球并加在数组中
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 bluenumder=r.nextInt(16)+1;
arr[arr.length-1]=bluenumder;
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;
}
}
如果你是正人君子,就自己实现一下,如果不是,可以使用主包打好的来玩一下
五、结尾
主包运行半天,也没有,中过奖,主包可能没有中奖得命
家人们可以将你们的代码,中奖记录可以回复到评论区,让主包吸吸欧气
能否给主包点点关注,我们下期再见。