利用java做一个双色球彩票系统
要求
package ZY;
import java.util.Random;
import java.util.Scanner;
public class Test9双色球 {
//目标:模拟双色球
//规则投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1-33中选择;蓝色球号码从1-16中选择。
public static void main(String[] args) {
//定义一个数组接受输入数字产生的数组
int num[]= numbers();
System.out.println("您的号码是");
pr(num);
//定义一个数组接受随机数字产生的数组
int num2[] = createNumbers();
System.out.println("中奖号码是");
pr(num2);
//调用中将判断的情况
userNumbers(num,num2);//传入客户猜的数字的数组和系统答案的数组
}
public static void pr(int[] num) {
System.out.print("[");
for (int i = 0; i < num.length; i++) {
System.out.print(i<num.length-1?num[i] + ", ":num[i]);
}
System.out.println("]");
}
//第一步:业务分析、用户投注一组号码
//1.1、 设计一个方法,用于让用户投注一组号码并返回(前6个是红球号码,最后1个是蓝球号码 )
public static int[] numbers() {
//1.2、创建一个整型数组,用于存储用户投注的7个号码(前6个是红球号码,最后1个是蓝球号码)
int number [] = new int[7];
Scanner Y = new Scanner(System.in);
// 1.3、遍历前6个位置,让用户依次投注6个红球号码,存入
for (int i = 0; i < number.length-1; i++) {//-1是因为最后一位要去存储蓝球
while (true) {//放到死循环里面,让他每次都去执行判断
//1. 4、开始让用户为当前位置投注一个红球号码(1-33之间,不能重复)
System.out.println("请输入第"+(i+1)+"个红球号码(1-33之间)");
int num = Y.nextInt();
//1.5、先判断用户输入的红球号码是否在1-33之间
if (num<1||num>33) {
System.out.println("对不起,您输入的红球号码不在1-33之间,请确认!");
}
//1.6通过上面的if判断了号码是在1-33之间了,接着还要继续判断这个号码是否重复,不重复才可以使用
else {
//1.6、 定义一个方法来判断是不死与前面输入的号码重复了
if ( exist(number,num))//传入数组和输入的数字,返回的是布尔类型,再利用if进行判断
{//当返回的是true的时候是重复了
System.out.println("对不起,您当前输入的红球号码前面选择过,重复了,请确认!");
}else {//此时没重复可以放进数组了
number[i]=num;//遍历下标放进数组里面
break;//录入成功后,结束死循环
}
}
}
}
//1.7、投注最后一个蓝球号码
while (true)//设置一个死循环,里层也惊醒判断和输出
{
System.out.println("请您输入最后1个蓝球号码(1-16):");
int num = Y.nextInt();
//判断是否在蓝球号码的范围里面
if (num<1||num>16) {
System.out.println("对不起,您输入的蓝球号码范围不对!");
}else {
//在范围里面直接把号码放进数组的最后一位
number[6] = num;
break;//录入成功后,结束死循环
}
}
return number;
}
//创建一个返回布尔类型对数据进行判断是否重复的方法
private static boolean exist(int[] number, int num) {
for (int i = 0; i < number.length; i++) {
if (number[i]==num) {
return true;//此时就是重复
}
}
return false;//没有重复的时候返回的代码
}
//第二步:随机生成一组中奖号码
//2.1、 设计一个方法,随机产生一组号码并返回(前6个是红球号码,最后1个是蓝球号码 )(利用函数组返回)
public static int[] createNumbers(){
//2.2、定义一个空数组接受随机数
int num2[] = new int[7];
Random Q = new Random();
for (int i = 0; i < num2.length-1; i++) {//-1是因为最后一位要去存储蓝球
//每次遍历产生一个随机数
int num = Q.nextInt(33)+1;//这种形式值从1-33都取闭区间
//2.3、判断是否与前面的重复,同样需要放进一个死循环中一直执行
while (true){
if (!exist(num2,num))//此处!exist的意思是因为如果没有重复则false,!false就是true则可以执行后面的代码
{
num2[i]=num;
break;//录入成功后,结束死循环
}
}
}
//2.4、产生最后一个蓝球号码
int num3 = Q.nextInt(16)+1;//这种形式值从1-16都取闭区间
num2[6]=num3;
return num2;
}
//第三步:判断中奖情况
//3.1定义一个进行判断中奖情况的方法
public static void userNumbers(int number1[],int number2[]){
//3.2、定义两个变量来接受红球猜中了几个,蓝球猜中了几个
int red = 0;
int bule = 0;
//3.3、需要定义两个循环进行嵌套
for (int i = 0; i < number1.length-1; i++) {
//-1是因为最后一位要去存储蓝球
for (int j = i+1; j < number2.length-1; j++) {
if (number1[i]==number2[j]) {//拿外部用户输入的第一个数字对系统产生的数字挨个进行判断是否相等
red++;
break;//跳出内部的for循环
}
}
}
bule = number1[6] == number2[6] ? 1 : 0;//3.4、利用三元判断进行判断最后一个蓝球是不是相等
System.out.println("您命中的红球数量是:"+red);
System.out.println("您命中的蓝球数量是:"+bule);
//3.5、进行判断奖金和中奖情况
if (red==6&&bule==1){
System.out.println("恭喜您,中奖1000万,可以开始享受人生了~~~");
} else if (red==6&&bule==0) {
System.out.println("恭喜您,中奖500万,可以稍微开始享受人生了~~~");
} else if (red==5&&bule==1) {
System.out.println("恭喜您,中奖3000元,可以出去吃顿小龙虾了~");
} else if (red==5&&bule==0||red==4&&bule==1) {
System.out.println("恭喜您,中了小奖:200元~");
} else if (red==4&&bule==0||red==3&&bule==1) {
System.out.println("中了10元~");
} else if (red<3&&bule==1) {
System.out.println("中了5元~~");
}else {
System.out.println("感谢您对福利事业做出的巨大贡献~~~");
}
}
}