package x;
import java.util.Scanner;
import java.util.Random;
import java.util.Arrays;
/* 双色球的大概规则:“双色球”彩票投注区分为红色球号码区(采用组合式玩法)
和蓝色球号码区;“双色球”每注投注号码由6个红色球号码和1个蓝色球号码组成。
红色球号码从1—33中选择,蓝色球号码从1—16中选择;
模拟双色球综合案例
1.准备相关变量
2.用户选择机选还是手选号码
3.接收用户选择的号码
4.系统产生中奖号码
5.验证是否中奖
6.公布结果
*/
public class test {
//定义相应的变量
public static void main(String[] args) {
int[] userredball = new int[6];
int userblueball = 0;
int[] sysredball = new int[6];
int sysblueball = 0;
int[] comredball = new int[33];
int[] comblueball = new int[16];
Scanner s = new Scanner(System.in);
Random r = new Random();
//将电脑中原本的红色球数字填入
for(int i=0;i<comredball.length;i++){
comredball[i] = i+1;
}
//将电脑中原本的蓝色球数字填入
for(int i=0;i<comblueball.length;i++){
comblueball[i] = i+1;
}
//用户选择是机选还是手选(),利用 switch,case结构来实现
System.out.println("请您选择是手选号码还是机选号码(1:手选 2:机选)");
boolean att = true;
//建立一个死循环,直到用户做出合理的选择之后停止
while(att){
int a = s.nextInt();
switch(a){
case 1:
System.out.println("请您输入红球号码:");
for(int i = 0;i<userredball.length;i++){
userredball[i] = s.nextInt();
}
System.out.println("请您输入蓝球号码:");
userblueball = s.nextInt();
//用户做出合理的选择,这时候退出死循环
att = false;
break;
case 2:
Comchoice(comredball,userredball);
userblueball = r.nextInt(comblueball.length)+1;
//用户做出合理的选择,这时候退出死循环
att = false;
break;
default:
System.out.println("输入错误!");
System.out.println("请您选择是手选号码还是机选号码(1:手选 2:机选)");
break;
}
}
//产生中奖号码
Comchoice(comredball,sysredball);
sysblueball = r.nextInt(comblueball.length)+1;
//将用户和系统产生的号码排序
Arrays.sort(userredball);
Arrays.sort(sysredball);
//比较选中数字的个数
int redcount = 0;
int bluecount = 0;
for(int i = 0;i<sysredball.length;i++){
//比较时,将用户红球中与电脑产生相同的数字舍去
for(int j = 0;j<userredball.length-redcount;j++){
if(sysredball[i]==userredball[j]) {
redcount++;
//将用户选中和电脑选择相同的数字往后放,这样能够提高效率!
int temp = userredball[j];
userredball[j]=userredball[userredball.length-redcount];
userredball[userredball.length-redcount] = temp;
}
}
}
//输出中奖号码
System.out.println("本期红球中奖号码:"+Arrays.toString(sysredball));
System.out.println("本期蓝球中奖号码:"+sysblueball);
//输出用户的号码
System.out.println("您选择的红球号码:"+Arrays.toString(userredball));
System.out.println("您选择的蓝球号码:"+userblueball);
//输出用户选中球的数量
if(sysblueball==userblueball)
{
bluecount++;
}
int count = bluecount+redcount;
System.out.println("您一共选对了"+count+"个数字,其中红球有"+redcount+"个,蓝球有"+bluecount+"个!");
}
//Comchoice()方法,用来生成用户机选以及中奖的号码
public static void Comchoice(int[] comredball, int[] userredball){
Random r = new Random();
for(int i=0;i<userredball.length;i++){
//将系统产生的随机数传递给用户红球数组
int t = r.nextInt(comredball.length-i);
userredball[i] = comredball[t];
//将已经产生的随机数放在最后一位,这样就不会产生重复的随机数了
int temp = comredball[t];
comredball[t] = comredball[comredball.length-i-1];
comredball[comredball.length-i-1] = temp;
}
}
}