大家好久不见,今天我分享的Java程序小心得是双色球抽奖小项目,这个项目比较难,所以所写的代码也很多,让我们开始吧。题目需求和规则如下图
首先做这个小程序要分为大致三个步骤,第一步就是要生成中奖号码;第二步就要键盘录入我们用户的号码;最后两种号码进行比较看看是否得奖。
public static int[] createNumber(){
//创建一个动态数组
int arr[] = new int[7];
Random r = new Random();
//前六位是红色球的号码
for (int i = 0; i < 6; ) {
//这里加1是因为索引范围是0-32,但题目要求是1-33
int redNumber = r.nextInt(33) + 1;
/*boolean flag = contains(arr,redNumber);*/
/*if (!flag){
arr[i] = redNumber;
i++;
}*/
}
这里我们先创立一个动态数组来存储红色球的数值,按照题目需求,前6个是红色球,且是随机值,所以我们求取红色球的值时,索引范围为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;
}
为了防止随机值会出现重复的情况,我们要创立一个方法来防止这种情况的出现。
public static int[] createNumber(){
//创建一个动态数组
int arr[] = new int[7];
Random r = new Random();
//前六位是红色球的号码
for (int i = 0; i < 6; ) {
//这里加1是因为索引范围是0-32,但题目要求是1-33
int redNumber = r.nextInt(33) + 1;
//引用方法
boolean flag = contains(arr,redNumber);
//这里也需要写一个判断,不重复就取
if (!flag){
arr[i] = redNumber;
i++;
}
}
//然后取蓝色球的号码,放在最后一个
int blueNumber = r.nextInt(16) + 1;
arr[arr.length - 1] = blueNumber;
return arr;
}
然后我们试着运行,看看效果。
结果显示,到目前为止吗,我们顺利的让其生成七个号码,那么我们来做第二步。
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) + "个红球号码");
int redNumber = sc.nextInt();
//if判断语句,防止超出范围
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语句嵌套,防止超出范围
System.out.println("请输入蓝球号码");
while (true) {
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++) {
//将输入的值赋给redNumber,在由此进行判断,如果符合,count就加一次
int redNumber = userInputArr[i];
for (int j = 0; j < arr.length; j++) {
if(redNumber == arr[j]){
redCount++;
break;
}
}
}
int blueNumber = userInputArr[userInputArr.length - 1];
if (blueNumber == arr[arr.length - 1]){
blueCount++;
}
然后通过if语句体进行判断。
if(redCount == 6 && blueCount == 1){
System.out.println("恭喜你,中奖1000万");
} else if (redCount == 6 && blueCount == 0) {
System.out.println("恭喜你,中奖500万");
} else if (redCount == 5 && blueCount == 1) {
System.out.println("恭喜你,中奖3000");
} else if ((redCount == 5 && blueCount == 0) || (redCount == 4 && blueCount == 1)){
System.out.println("恭喜你,中奖200");
} else if ((redCount == 4 && blueCount == 0) || (redCount == 3 && blueCount == 1)) {
System.out.println("恭喜你,中奖10");
} else if ((redCount == 1 && blueCount == 1) || (redCount == 0 && blueCount == 1) || (redCount == 1 && blueCount == 1)) {
System.out.println("恭喜你,中奖5");
}else {
System.out.println("谢谢惠顾");
}
最终得出结果。
本次将随机和键盘录入的数展现出来是为了让大家看清楚是否每一步都达到了效果,代码仅供参考,有好的建议请指教,Ps(拒绝赌博,从我做起)