目录
一、抽奖系统介绍
抽奖的号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1-33中选择,不允许重复,蓝色球号码从1-16中选择。红色球只看值,不看顺序。
注:我们这里规定一等奖为1000万,二等奖为30万,其他与表中一致。
二、代码实现
1、随机生成中奖号码
1.1、中奖号码createNumber方法
创建一个长度为7的数组存放中奖号码,其中前6个为红球,最后1个为蓝球。需要注意的是,for循环中,需要把i++放在if判断语句中,当数字重复时不执行i++语句,只有录入成功才进行++操作。
//写一个随机获取中奖号码的方法createNumber()
public static int[] createNumber(){
int[] arr = new int[7];
Random r = new Random();
for (int i = 0; i < 6;){
int redNumber = r.nextInt(33) + 1;
if (!contains(arr,redNumber)){
arr[i] = redNumber;
i++;
}
}
int blueNumber = r.nextInt(16)+1;
arr[arr.length-1] = blueNumber;
return arr;
}
1.2、控制判断contains方法
当数组arr中有number则返回false,没有则返回true。
//判断一个数在不在数组内
public static boolean contains(int[] arr, int number){
for (int i = 0; i < arr.length; i++){
if(arr[i] == number){
return true;
}
}
return false;
}
2、用户输入中奖号码
同样创建一个长度为7的数组,利用键盘录入用户输入号码。同样需要把i++放入if判断语句中,当录入成功再进行i++操作。
//写一个用户输入彩票号码的方法userInputNumber()
public static int[] userInputNumber(){
int[] arr = new int[7];
Scanner sc = new Scanner(System.in);
for(int i = 0; i < arr.length-1;){
System.out.println("请输入第"+ (i+1) +"个红球号码");
int redNumber = sc.nextInt();
if(redNumber >= 1 && redNumber <= 33){
if(!contains(arr,redNumber)){
arr[i] = redNumber;
i++;
}
} else {
//当输入的号码不符合条件时,给出提示
System.out.println("输入超出范围");
}
}
System.out.println("请输入蓝球号码");
while (true){
int blueNumber = sc.nextInt();
if(blueNumber >= 1 && blueNumber <= 16){
arr[arr.length-1] = blueNumber;
break;
}
}
return arr;
}
3、判断中奖情况
定义redCount和blueCount存放相同球的个数,写for循环时需要注意红球的范围。
public static void main(String[] args) {
//通过createNumber()方法生成随机中奖号码
int[] arr = createNumber();
//打印随机获取的彩票号码和用户输入的彩票号码,然后可以看着中奖号码来输入号码,想中多少奖就中多少奖
/*for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println(" ");*/
//用户输入号码
int[] userArr = userInputNumber();
/*for (int i = 0; i < userArr.length; i++) {
System.out.print(userArr[i] + " ");
}*/
int redCount = 0;
int blueCount = 0;
for (int i = 0; i < userArr.length - 1; i++) {
int redNumber = userArr[i];
for (int j = 0; j < arr.length - 1; j++) {
if (redNumber == arr[j]) {
redCount++;
break;
}
}
}
if (userArr[userArr.length - 1] == arr[arr.length - 1]) {
blueCount = blueCount + 1;
}
//查看红蓝球各中多少
/*System.out.println(" ");
System.out.println(redCount);
System.out.println(blueCount);
*/
//调用judgeWin()方法来判断中了多少奖
judgeWin(redCount,blueCount);
}
3.1、判断奖项isWin方法
用于判断是否中奖以及中几等奖的函数,几等奖对应返回数字几,并在main中用switch判断。
public static void judgeWin(int redCount, int blueCount){
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 == 2 && blueCount == 1) || (redCount == 1 && blueCount == 1)
|| (redCount == 0 && blueCount == 1)) {
System.out.println("恭喜你,中奖5元");
} else {
System.out.println("谢谢参与");
}
}
三、完整代码
package test;
import java.util.Scanner;
import java.util.Random;
public class Text6 {
public static void main(String[] args) {
//通过createNumber()方法生成随机中奖号码
int[] arr = createNumber();
//打印随机获取的彩票号码和用户输入的彩票号码,然后可以看着中奖号码来输入号码,想中多少奖就中多少奖
/*for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println(" ");*/
//用户输入号码
int[] userArr = userInputNumber();
/*for (int i = 0; i < userArr.length; i++) {
System.out.print(userArr[i] + " ");
}*/
int redCount = 0;
int blueCount = 0;
for (int i = 0; i < userArr.length - 1; i++) {
int redNumber = userArr[i];
for (int j = 0; j < arr.length - 1; j++) {
if (redNumber == arr[j]) {
redCount++;
break;
}
}
}
if (userArr[userArr.length - 1] == arr[arr.length - 1]) {
blueCount = blueCount + 1;
}
//查看红蓝球各中多少
/*System.out.println(" ");
System.out.println(redCount);
System.out.println(blueCount);
*/
//调用judgeWin()方法来判断中了多少奖
judgeWin(redCount,blueCount);
}
public static void judgeWin(int redCount, int blueCount){
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 == 2 && blueCount == 1) || (redCount == 1 && blueCount == 1)
|| (redCount == 0 && blueCount == 1)) {
System.out.println("恭喜你,中奖5元");
} else {
System.out.println("谢谢参与");
}
}
//写一个随机获取中奖号码的方法createNumber()
public static int[] createNumber(){
int[] arr = new int[7];
Random r = new Random();
for (int i = 0; i < 6;){
int redNumber = r.nextInt(33) + 1;
if (!contains(arr,redNumber)){
arr[i] = redNumber;
i++;
}
}
int blueNumber = r.nextInt(16)+1;
arr[arr.length-1] = blueNumber;
return arr;
}
//写一个用户输入彩票号码的方法userInputNumber()
public static int[] userInputNumber(){
int[] arr = new int[7];
Scanner sc = new Scanner(System.in);
for(int i = 0; i < arr.length-1;){
System.out.println("请输入第"+ (i+1) +"个红球号码");
int redNumber = sc.nextInt();
if(redNumber >= 1 && redNumber <= 33){
if(!contains(arr,redNumber)){
arr[i] = redNumber;
i++;
}
} else {
//当输入的号码不符合条件时,给出提示
System.out.println("输入超出范围");
}
}
System.out.println("请输入蓝球号码");
while (true){
int blueNumber = sc.nextInt();
if(blueNumber >= 1 && blueNumber <= 16){
arr[arr.length-1] = blueNumber;
break;
}
}
return arr;
}
//判断一个数在不在数组内
public static boolean contains(int[] arr, int number){
for (int i = 0; i < arr.length; i++){
if(arr[i] == number){
return true;
}
}
return false;
}
}