目录
双色球业务介绍
投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1一33中选择(不重复);蓝色球号码从1-16中选择。
根据红色球和蓝色球的号码来共同决定是否中奖。
奖等 | 中奖条件 | 单注奖金分配 | |
---|---|---|---|
红色球 | 蓝色球 | ||
一等奖 | 6个 | 1个 | 最高1000万 |
二等奖 | 6个 | 0个 | 最高500万 |
三等奖 | 5个 | 1个 | 3000元 |
四等奖 | 5个 | 0个 | 200元 |
4个 | 1个 | ||
五等奖 | 4个 | 0个 | 10元 |
3个 | 1个 | ||
3个 | 0个 | ||
六等奖 | 2个 | 1个 | 5元 |
1个 | 1个 | ||
0个 | 1个 |
总体实现步骤分析
主要是要实现三个功能:
- 用于让用户投注一组号码(前六个是红色球,最后一个是蓝色球),并返回用户投注的号码
- 系统随机一组中奖号码(前六个是红色球,最后一个是蓝色球),并返回这组中奖号码
- 传入两组号码,用来判断用户投注号码的中奖情况,并输出
用户投注一组号码
代码
import java.util.Scanner;
public class Test
{
public static void main(String[] args) {
int[] userNumbers = new int[7];
userNumbers = userSelectNumbers();
printIntArray(userNumbers);
}
//1.用于让用户投注一组号码(前六个是红色球,最后一个是蓝色球),并返回用户投注的号码
public static int[] userSelectNumbers(){
//定义一个整型数组用于存储用户投注的号码球
int[] numbers = new int[7];
Scanner sc = new Scanner(System.in);
//把红色球和蓝色球分开处理
//先投入六个红色球
for (int i = 0; i < numbers.length - 1; i++) {
while (true) {
System.out.println("请您输入第" + (i + 1) + "红色球的号码(1-33之间,不能重复):");
int number = sc.nextInt();
//判断用户输入的红色球号码是否在1-33之间
if(number < 1 || number > 33){
System.out.println("对不起,您输入的红色球号码不在1-33之间,请重新输入!");
}else{
//号码在1-33之间,接下来要判断是否重复
if(exist(numbers,number)){
//定义一个方法来判断是否重复
System.out.println("对不起,您当前输入的红色球号码与前面重复,请重新输入!");
}else{
numbers[i] = number;
break;
}
}
}
}
//再投注一个蓝色球
while(true){
System.out.println("请您输入最后一个蓝色球的号码(1-16):");
int number = sc.nextInt();
//像之前一样判断是否在范围内
if(number < 1 || number > 16){
System.out.println("对不起,您输入的蓝色球号码范围不对!");
}else{
numbers[6] = number;
break;
}
}
return numbers;
}
public static boolean exist(int[] numbers,int number){
for (int i = 0; i < numbers.length - 1; i++) {
if(number == numbers[i]){
return true;
}
}
return false;
}
public static void printIntArray(int[] arr){
System.out.print("[" + " ");
for (int i = 0; i < arr.length; i++) {
System.out.print(i == (arr.length - 1) ? arr[i] + " " + "]" : arr[i] + " ");
}
}
}
运行结果
随机生成一组中奖号码
代码
import java.util.Random;
import java.util.Scanner;
public class Test
{
public static void main(String[] args) {
int[] LuckNumbers = new int[7];
LuckNumbers = createLuckNumber();
printIntArray(LuckNumbers);
}
public static boolean exist(int[] numbers,int number){
for (int i = 0; i < numbers.length - 1; i++) {
if(number == numbers[i]){
return true;
}
}
return false;
}
public static void printIntArray(int[] arr){
System.out.print("[" + " ");
for (int i = 0; i < arr.length; i++) {
System.out.print(i == (arr.length - 1) ? arr[i] + " " + "]" : arr[i] + " ");
}
}
//2.系统随机一组中奖号码(前六个是红色球,最后一个是蓝色球),并返回这组中奖号码
public static int[] createLuckNumber(){
int[] numbers = new int[7];
//要产生随机数
Random r = new Random();
//同样,先随机产生红色球的号码
for (int i = 0; i < numbers.length - 1; i++) {
while(true){
int number = r.nextInt(33) + 1;
//随机是取了范围的,所以不必判断是否在范围内,而需要判断是否重复
if(! exist(numbers,number)){
numbers[i] = number;
break;
}
}
}
//再来随机一个蓝色球
numbers[6] = r.nextInt(16) + 1;
return numbers;
}
}
判断中奖情况
代码
import java.util.Random;
import java.util.Scanner;
public class Test
{
public static void main(String[] args) {
int[] userNumbers = new int[7];
userNumbers = userSelectNumbers();
printIntArray(userNumbers);
int[] LuckNumbers = new int[7];
LuckNumbers = createLuckNumber();
printIntArray(LuckNumbers);
judge(userNumbers,LuckNumbers);
}
//1.用于让用户投注一组号码(前六个是红色球,最后一个是蓝色球),并返回用户投注的号码
public static int[] userSelectNumbers(){
//定义一个整型数组用于存储用户投注的号码球
int[] numbers = new int[7];
Scanner sc = new Scanner(System.in);
//把红色球和蓝色球分开处理
//先投入六个红色球
for (int i = 0; i < numbers.length - 1; i++) {
while (true) {
System.out.println("请您输入第" + (i + 1) + "红色球的号码(1-33之间,不能重复):");
int number = sc.nextInt();
//判断用户输入的红色球号码是否在1-33之间
if(number < 1 || number > 33){
System.out.println("对不起,您输入的红色球号码不在1-33之间,请重新输入!");
}else{
//号码在1-33之间,接下来要判断是否重复
if(exist(numbers,number)){
//定义一个方法来判断是否重复
System.out.println("对不起,您当前输入的红色球号码与前面重复,请重新输入!");
}else{
numbers[i] = number;
break;
}
}
}
}
//再投注一个蓝色球
while(true){
System.out.println("请您输入最后一个蓝色球的号码(1-16):");
int number = sc.nextInt();
//像之前一样判断是否在范围内
if(number < 1 || number > 16){
System.out.println("对不起,您输入的蓝色球号码范围不对!");
}else{
numbers[6] = number;
break;
}
}
return numbers;
}
public static boolean exist(int[] numbers,int number){
for (int i = 0; i < numbers.length - 1; i++) {
if(number == numbers[i]){
return true;
}
}
return false;
}
public static void printIntArray(int[] arr){
System.out.print("[" + " ");
for (int i = 0; i < arr.length; i++) {
System.out.print(i == (arr.length - 1) ? arr[i] + " " + "]" : arr[i] + " ");
}
System.out.println(" ")
}
//2.系统随机一组中奖号码(前六个是红色球,最后一个是蓝色球),并返回这组中奖号码
public static int[] createLuckNumber(){
int[] numbers = new int[7];
//要产生随机数
Random r = new Random();
//同样,先随机产生红色球的号码
for (int i = 0; i < numbers.length - 1; i++) {
while(true){
int number = r.nextInt(33) + 1;
//随机是取了范围的,所以不必判断是否在范围内,而需要判断是否重复
if(! exist(numbers,number)){
numbers[i] = number;
break;
}
}
}
//再来随机一个蓝色球
numbers[6] = r.nextInt(16) + 1;
return numbers;
}
//3.传入两组号码,用来判断用户投注号码的中奖情况,并输出
public static void judge(int[] userNumbers,int[] LuckNumbers){
//分别定义两个变量用于记录两个球命中了几个
int redCount = 0,blueCount = 0;
//用迭代循环来判断红色球的中奖情况
for (int i = 0; i < userNumbers.length - 1; i++) {
for(int j = 0;j < LuckNumbers.length - 1;j++){
if(userNumbers[i] == LuckNumbers[j]){
redCount++;
break;
}
}
}
//判断蓝色球的中奖情况
blueCount = userNumbers[6] == LuckNumbers[6] ? 1 : 0;
System.out.println("总命中的红色球数量是:" + redCount);
System.out.println("总命中的蓝色球数量是:" + blueCount);
//最后再来输出中的是什么奖,奖金多少
//可以用if语句分开判断,也可以将红色球的数量与蓝色球的数量结合起来用switch判断
int judge = (redCount * 10) + blueCount;
switch (judge){
case 61:
System.out.println("恭喜你中了一等奖,1000万!");
break;
case 60:
System.out.println("恭喜你中了二等奖,500万!");
break;
case 51:
System.out.println("恭喜你中了三等奖,3000元!");
break;
case 50:
case 41:
System.out.println("恭喜你中了四等奖,200元!");
break;
case 40:
case 31:
case 30:
System.out.println("恭喜你中了五等奖,10元!");
break;
case 21:
case 11:
case 1:
System.out.println("恭喜你中了六等奖,5元!");
break;
default:
System.out.println("感谢您为体育事业做出的贡献!");
break;
}
}
}
运行结果
END
学习自:黑马程序员——JavaSE课程