双色球奖规则
这是双色球规则和条件,我们学完数组后就可以尝试实现这个案例了
本质上可以分成两个数组,然后选号码即为从数组里面取值,取出来后不重复
(实现的话可以取出来后赋值一个数,如果有后续再想随机数的话就会跳过,保证唯一性)
实现随机数的方法还是math工具类里面的random方法
我的代码
public class 双色球 {
public static void main(String[] args) {
// 定义一个存放用户输入的六个双色球红球的数组
int[] redQ = new int[6];
// 定义一个存放用户输入的一个双色球蓝球的数组
int[] buleQ = new int[1];
// 定义一个存放系统产生的六个双色球红球的数组
int[] redCompute = new int[6];
// 定义一个存放系统产生的一个双色球蓝球的数组
int[] buleCompute = new int[1];
// 系统获取双色球中奖号码
// 设置双色球池子
int[] redBall = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33 };
/*
* 解法有问题 for (int i = 0; i < redBall.length; i++) { int i1; int i2=0; while
* (true) { i1=(int)Math.random()*100%33; if (redBall [i1]!=5) {
* redCompute[i]=redBall[i1]; i2++; if (i2==5) { for (int j = 0; j <
* redCompute.length; j++) { System.out.println(redCompute[j]); } break; } } } }
*/
// 循环将号码存进系统产生的红色球池子
for (int i = 0; i < redCompute.length; i++) {
int i1 = 0;
// 如果有重复获取,那么就一直返回重新获取随机数
while (true) {
i1 = (int) (Math.random() * 33);
if (redBall[i1] != -1) {
// 将随机数存入池子
redCompute[i] = redBall[i1];
// 已经存了的号码用-1顶替,这样在while循环里面的if判断进不来
redBall[i1] = -1;
// 正确获得,则退出当前循环,回到上一级的for循环
break;
}
}
}
int i2 = (int) (Math.random() * 16) + 1;
buleCompute[0] = i2;
// 作弊码,打印出红球号码
System.out.println("=====测试码(作弊码)======");
System.out.println(Arrays.toString(redCompute));
// 作弊码,打印出蓝球号码
System.out.println(Arrays.toString(buleCompute));
// 用户端输入双色球号码
System.out.print("请输入六个红色球号码(1~33):");
Scanner red = new Scanner(System.in);
for (int i = 0; i < redQ.length; i++) {
redQ[i] = red.nextInt();
System.out.println("输入的第" + (i + 1) + "红色球号码为" + redQ[i] + "\t");
}
System.out.println("请输入一个蓝色球号码(1~16)");
Scanner bule = new Scanner(System.in);
buleQ[0] = bule.nextInt();
System.out.println("输入的蓝色球号码为" + buleQ[0]);
// 设置红球和蓝球中奖个数
int redcount = 0;
int bulecount = 0;
// 循环比对,如果用户的红球和系统的红球有一样的,则中奖次数加一
for (int i = 0; i < redCompute.length; i++) {
for (int j = 0; j < redQ.length; j++) {
if (redCompute[i] == redQ[j]) {
redcount++;
}
}
}
if (buleCompute[0] == buleQ[0]) {
bulecount++;
}
// 结果比对
System.out.print("中奖红色球号码" + Arrays.toString(redCompute) + "\t");
System.out.println("中奖蓝色球号码" + Arrays.toString(buleCompute));
System.out.print("用户红色球号码" + Arrays.toString(redQ) + "\t");
System.out.println("用户蓝色球号码" + Arrays.toString(buleQ));
System.out.println(redcount);
System.out.println(bulecount);
// 显示奖励等次
if (redcount == 6 && bulecount == 1) {
System.out.println("一等奖!奖金一千万!");
} else if (redcount == 6 && bulecount == 0) {
System.out.println("二等奖!奖金五百!");
} else if (redcount == 5 && bulecount == 1) {
System.out.println("三等奖!奖金一百万!");
} else if (redcount == 5 || (redcount == 4 && bulecount == 1)) {
System.out.println("四等奖!奖金一千块!");
} else if (redcount == 4 || (redcount == 3 && bulecount == 1)) {
System.out.println("五等奖!奖金一百块!");
} else if ((redcount == 2 && bulecount == 1) || (redcount == 1 && bulecount == 1) || bulecount == 1) {
System.out.println("六等奖!奖金十块!");
} else {
System.out.println("很遗憾没能中奖");
}
}
}
结果