双色球规则图
- 系统随机在1-33中生成6个红球
- 系统随机在1-16中生成1个蓝球
- 用户输入的6红球数值和蓝球数值
分析
1.系统随机生成的红球数值不能重复
2.蓝球在最后一位
3.统计红球命中个数以及蓝球是否命中
代码实现
系统随机生成6个红球和一个蓝球:
//系统生成双色球
private static int[] luckNum(Random rd) {
//声明数组用来接收随机生成的红球
int[] luckArr = new int[7];
//判断数组里面是否存在重复的
for (int i = 0; i < luckArr.length-1; i++) {
int rand = rd.nextInt(33)+1;
if (!isext(luckArr,rand)){
luckArr[i] = rand;
}
}
//随机生成蓝球
int blue = rd.nextInt(16)+1;
luckArr[6] = blue;
return luckArr;
}
对random循环6次相当于在luckArr里面存入6个红球,然后判断(isext)随机生成的值是否以及存在luckArr里面,如果没有就将生成的红球数值放入luckArr,最后在数组的最后以为放入随机生成的蓝球。
用户输入双色球代码实现:
private static int[] userLuck(Scanner sc) {
int[] userArr = new int[7];
for (int i = 0; i < userArr.length - 1; i++) {
System.out.println("请输入第"+(i+1)+"个红球");
int redsNum = sc.nextInt();
userArr[i] = redsNum;
}
System.out.println("请输入蓝球");
int blueNum = sc.nextInt();
userArr[6] = blueNum;
return userArr;
}
同理在数组的前6个位置我们放红球,在最后一个位置放蓝球。
统计判断命中数以及中奖情况代码实现:
private static void isLuck(int[] xitongLuck, int[] yonghuLuck) {
//获取系统产生的红球
int[] luckReds = new int[6];
for (int i = 0; i < luckReds.length-1; i++) {
luckReds[i] = xitongLuck[i];
}
//获取系统产生的蓝球
int luckBlue = xitongLuck[6];
//获取用户的红球
int[] userLuck = new int[6];
for (int j = 0; j < userLuck.length-1; j++) {
userLuck[j] = yonghuLuck[j];
}
//获取用户的蓝球
int userBlue = yonghuLuck[6];
//判断命中数
int count = 0;
for (int i = 0; i < userLuck.length-1; i++) {
for (int j = 0; j < luckReds.length-1; j++) {
if (userLuck[i] == luckReds[j]){
count ++;
}
}
}
System.out.println("用户命中了" + count + "个红色球");
System.out.println("用户" + (userBlue == luckBlue ? "命中了" : "没有命中") + "蓝色球");
//如果中奖的话就进行奖项的输出
if (count == 6 && userBlue == luckBlue) {
System.out.println("恭喜,中了一等奖,奖金一千万");
} else if (count == 6) {
System.out.println("恭喜,中了二等奖,奖金五百万");
} else if (count == 5 && userBlue == luckBlue) {
System.out.println("恭喜,中了三等奖,奖金三千元");
} else if (count ==5 || count == 4 && userBlue == luckBlue) {
System.out.println("恭喜,中了四等奖,奖金两百元");
} else if (count == 4 || count == 3 && userBlue == luckBlue) {
System.out.println("恭喜,中了五等讲,奖金10元");
} else if (userBlue == luckBlue) {
System.out.println("恭喜,中了六等奖,奖金5元");
} else {
System.out.println("很遗憾,你并未中奖");
}
}
首先分别取出系统产生的红球和用户输入的蓝球(当然这里也可以直接循环原来的数组不需要取出红球),统计用户输入的红球和系统产生的红球相同的个数,在判断蓝球是否相同,最后输出获奖情况就可以了。
完整代码
public static void main(String[] args) {
//定义随机生成的双色求
Random rd = new Random();
int[] xitongLuck = luckNum(rd);
//用户输入自己的双色球号码
Scanner sc = new Scanner(System.in);
int[] yonghuLuck = userLuck(sc);
//判断中奖情况
isLuck(xitongLuck,yonghuLuck);
printArr(xitongLuck);
printArr(yonghuLuck);
}
private static void isLuck(int[] xitongLuck, int[] yonghuLuck) {
//获取系统产生的红球
int[] luckReds = new int[6];
for (int i = 0; i < luckReds.length-1; i++) {
luckReds[i] = xitongLuck[i];
}
//获取系统产生的蓝球
int luckBlue = xitongLuck[6];
//获取用户的红球
int[] userLuck = new int[6];
for (int j = 0; j < userLuck.length-1; j++) {
userLuck[j] = yonghuLuck[j];
}
//获取用户的蓝球
int userBlue = yonghuLuck[6];
//判断命中数
int count = 0;
for (int i = 0; i < userLuck.length-1; i++) {
for (int j = 0; j < luckReds.length-1; j++) {
if (userLuck[i] == luckReds[j]){
count ++;
}
}
}
System.out.println("用户命中了" + count + "个红色球");
System.out.println("用户" + (userBlue == luckBlue ? "命中了" : "没有命中") + "蓝色球");
//如果中奖的话就进行奖项的输出
if (count == 6 && userBlue == luckBlue) {
System.out.println("恭喜,中了一等奖,奖金一千万");
} else if (count == 6) {
System.out.println("恭喜,中了二等奖,奖金五百万");
} else if (count == 5 && userBlue == luckBlue) {
System.out.println("恭喜,中了三等奖,奖金三千元");
} else if (count ==5 || count == 4 && userBlue == luckBlue) {
System.out.println("恭喜,中了四等奖,奖金两百元");
} else if (count == 4 || count == 3 && userBlue == luckBlue) {
System.out.println("恭喜,中了五等讲,奖金10元");
} else if (userBlue == luckBlue) {
System.out.println("恭喜,中了六等奖,奖金5元");
} else {
System.out.println("很遗憾,你并未中奖");
}
}
//判断用户输入的是否和系统产生的一致
//用户输入双色球
private static int[] userLuck(Scanner sc) {
int[] userArr = new int[7];
for (int i = 0; i < userArr.length - 1; i++) {
System.out.println("请输入第"+(i+1)+"个红球");
int redsNum = sc.nextInt();
userArr[i] = redsNum;
}
System.out.println("请输入蓝球");
int blueNum = sc.nextInt();
userArr[6] = blueNum;
return userArr;
}
//系统生成双色球
private static int[] luckNum(Random rd) {
//声明数组用来接收随机生成的红球
int[] luckArr = new int[7];
//判断数组里面是否存在重复的
for (int i = 0; i < luckArr.length-1; i++) {
int rand = rd.nextInt(33)+1;
if (!isext(luckArr,rand)){
luckArr[i] = rand;
}
}
//随机生成蓝球
int blue = rd.nextInt(13)+1;
luckArr[6] = blue;
return luckArr;
}
public static boolean isext(int[] arr, int num){
for (int i = 0; i < arr.length; i++) {
if (arr[i] == num){
return true;
}
}
return false;
}
public static void printArr(int[] arr) {
String printStr = "[";
for (int i = 0; i < arr.length; i++) {
//判断是不是最后一个,最后不需要,
if (i == arr.length - 1) {
printStr += arr[i];
} else {
printStr += arr[i] + ",";
}
}
printStr += "]";
System.out.println(printStr);
}
模拟双色球获奖情况到这里就结束了希望对学习Java的各位有所帮助,同时欢迎评论修改共同学习