java之双色球模拟

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;
            
        }
    }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值