题目描述:
思路分析:
1.首先要定义一个方法生成7位随机数字的中奖号码
2.然后定义一个方法来获取用户输入的7位号码
3.再定义一个方法来判断中奖情况
4.定义一个方法将中奖号码和用户投注号码打印出来
package Lq_project;
import java.util.Random;
import java.util.Scanner;
//java实现双色球系统开发
public class Demo03 {
//随机6个红球号码(1-33,不能重复),随机1个蓝球号码(1-16),可以采用数组形式组装起来作为中奖号码
public static void main(String[] args) {
//幸运号码
int[] luckyNumbers=createLuckyNum();
//投注号码
int[] userNumbers=userInputNum();
//判断中奖情况
judge(luckyNumbers, userNumbers);
}
//定义一个方法打印出数组
public static void printArray(int[] arr) {
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
//判断中奖情况
public static void judge(int[] luckyNumbers,int[] userNumbers) {
int redNumber=0;
int blueNumber=0;
//判断红球
for(int i=0;i<userNumbers.length-1;i++) {
for(int j=0;j<luckyNumbers.length-1;j++) {//利用循环嵌套判断中奖中的号码和投注的号码有几个一样的红球
if(userNumbers[i]==luckyNumbers[j]) {
redNumber++;
}
}
}
//判断蓝球
blueNumber=userNumbers[6]==luckyNumbers[6]?1:0;
//打印出中奖号码
System.out.println("中奖号码是:");
printArray(luckyNumbers);
//打印出投注号码
System.out.println("您投注的号码是:");
printArray(userNumbers);
//红球
System.out.println("您命中了几个红球:"+redNumber);
//蓝球
System.out.println("您是否命中了蓝球:"+(blueNumber==1?"是":"否"));
//判断中奖情况
if(blueNumber==1&&redNumber<3) {
System.out.println("恭喜您,中了5元小奖");
}else if(blueNumber==1&&redNumber==3||blueNumber==0&&redNumber==4) {
System.out.println("恭喜您,中了10元小奖");
}else if(blueNumber==1&&redNumber==4||blueNumber==0&&redNumber==5) {
System.out.println("恭喜您,中了200元");
}else if(blueNumber==1&&redNumber==5) {
System.out.println("恭喜您,中了3000元小奖");
}else if(blueNumber==0&&redNumber==6) {
System.out.println("恭喜您,中了500万元大奖");
}else if(blueNumber==1&&redNumber==6) {
System.out.println("恭喜您,中了1000万元大奖");
}else {
System.out.println("不好意思,您未中奖");
}
}
//定义一个方法生成7位数字的中奖号码
public static int[] createLuckyNum() {
//1.定义一个动态初始化的数组,储存7个数字
int[] number=new int[7];
//2.遍历数组(注意:遍历前6个位置,因为第7个位置是蓝球,生成6个不重复的红球号码,范围是1-33)
Random r=new Random();
for(int i=0;i<number.length-1;i++) {
//这里有个死循环是因为我们要不断找出1-33之间没有重复出现的数字
while(true) {
int num1=r.nextInt(33)+1;
//3.这里要判断当前随机生成的这个号码是否在之前出现过,如果出现过则要重新随机一个,直到不重复为止,才可以存到数组中去
//[12,36,12,0,0,0, |, 0]
// i,这里i的位置重复出现12,那我们需要遍历i之前的元素查找是否出现过12
boolean flag=true;//判断是否是重复的,默认设置为没有重复
for(int j=0;j<i;j++) {//判断该数字在之前有没有出现过
if(number[j]==num1) {
flag=false;
break;
}
}
if(flag) {//flag则代表当前数字在之前没有出现过,即没有重复出现,则可以存到数组中去
number[i]=num1;
break;
}
}
}
//4.为第7个位置生成一个1-16的号码作为蓝球号码
number[number.length-1]=r.nextInt(16)+1;
return number;
}
//定义一个方法用于用户输入7位号码,作为用户选号
public static int[] userInputNum() {
int[] number=new int[7];
Scanner sc=new Scanner(System.in);
//1.用户录入6个红球号码
for(int i=0;i<number.length-1;i++) {
System.out.println("请您输入第"+(i+1)+"个红球号码(1-33,不能重复):");
int data=sc.nextInt();
//把当前录入的数据存到数组中去
number[i]=data;
}
//2.单独录入第7个蓝球号码
System.out.println("请您录入第7个蓝球号码(1-16):");
number[number.length-1]=sc.nextInt();
return number;
}
}
示例:
运行结果示例: