应用案例之模拟双色球彩票

应用案例之模拟双色球彩票
  1、双色球彩票的玩法:
    双色球投注区分为红色球号码区和蓝色球号码区,红色球号码范围为01-33,蓝色球号码范围为01-16.
    双色球每期从33个红球中开出6个号码,从16个蓝球中开出1个号码作为中奖号码,双色球玩法即是竞猜开奖号码的6个红球号码和1个蓝球号码,顺序不限

应用案例之模拟双色球彩票

  1 package com.xiongdilian.first;

  2 

  3 import java.util.Random;

  4 import java.util.Scanner;

  5 

  6 /*

  7       应用案例之模拟双色球彩票

  8               1、双色球彩票的玩法:

  9                       双色球投注区分为红色球号码区和蓝色球号码区,红色球号码范围为01-33,蓝色球号码范围为01-16.

 10                       双色球每期从33个红球中开出6个号码,从16个蓝球中开出1个号码作为中奖号码,双色球玩法即是竞猜开奖号码的6个红球号码和1个蓝球号码,顺序不限

 11               

 12               2、双色球彩票需求分析:

 13                   1、如何产生篮球和红球

 14                   2、如何接收用户选号

 15                   3、如何验证是否中奖

 16                   4、公布本期中奖号码

 17                   

 18               3、实现步骤:

 19                   1、系统生成一个篮球和六个红球,并存储起来

 20                   2、接收用户选号,1个蓝球和6个红球

 21                   3、验证系统号码与用户号码是否匹配(是否中奖)

 22                   4、公布本期中奖号码

 23  */

 24 public class fiftyFour_fiftyFive_fiftySix_fiftySeven_fiftyEight {

 25 

 26     public static void main(String[] args) {

 27         

 28         //定义变量

 29         int  sysBlueBallNum;//系统生成的篮球号

 30         int[] sysRedBallNum = new int[6];//系统生成的红球号

 31         int userBlueBallNum;//用户选择的蓝球号

 32         int[] userRedBallNum = new int[6];//用户选择的红球号

 33         

 34         int blueBall = 0;//篮球号码是否正确;

 35         int redBallCount = 0;//记录红球号码正确的数量

 36         

 37         Random r = new Random();//创建生成随机数的工具类

 38         Scanner input = new Scanner(System.in);

 39         

 40         

 41         int[] redNum = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33};

 42         

 43         sysBlueBallNum = r.nextInt(16)+1;//括号里的16表示随机产生一个0到16之间的数,这里包括0不包括16,双色球中没有0所以要加上1(产生篮球号码)

 44         

 45         //随机生成红球号码

 46         for(int i = 0; i<sysRedBallNum.length;i++){

 47             while(true){

 48                 int index = r.nextInt(33);//redNum的下标

 49                 if(redNum[index]!=0){

 50                     sysRedBallNum[i] = redNum[index];

 51                     redNum[index] = 0;

 52                     break;

 53                 }

 54             }

 55         }

 56         

 57         

 58         //用户输入号码

 59         System.out.println("双色球彩票选号开始。。。。。祝你好运!");

 60         System.out.println("请选择篮球号码(16选1):");

 61         userBlueBallNum = input.nextInt();

 62         System.out.println("请选择红球号码(33选6):");

 63         for(int i = 0;i<userRedBallNum.length;i++){

 64             userRedBallNum[i] = input.nextInt();

 65         }

 66         

 67         

 68         //判断用户选择的号码跟系统生成的号码是否匹配

 69         //----验证篮球

 70         if(userBlueBallNum == sysBlueBallNum){

 71             blueBall = 1;

 72         }

 73         //-----验证红球

 74         for(int i= 0;i<userRedBallNum.length;i++ ){

 75             for(int j = 0;j<sysRedBallNum.length;j++){

 76                 if(userRedBallNum[i] == sysRedBallNum[j]){

 77                     redBallCount++;

 78                     break;

 79                 }

 80             }

 81         }

 82         

 83         

 84         

 85         //判断是否中奖了

 86         if(blueBall==1 && redBallCount==6){

 87             System.out.println("恭喜你中了一等奖500万!");

 88         }else if(redBallCount==6){

 89             System.out.println("恭喜你中了二等奖!");

 90         }else if(blueBall==1 && redBallCount==5){

 91             System.out.println("恭喜你中了三等奖,3000元!");

 92         }else if(redBallCount==5 || (redBallCount==4 && blueBall==1)){

 93             System.out.println("恭喜你中了四等奖,200元!");

 94         }else if(redBallCount==4 || (redBallCount==3 && blueBall==1)){

 95             System.out.println("恭喜你中了五等奖,10元!");

 96         }else if(blueBall==1){

 97             System.out.println("恭喜你中了六等奖,5元!");

 98         }else{

 99             System.out.println("革命尚未成功,同志仍需努力");

100         }

101         

102         

103         //公布本期中奖号码

104         int temp;

105         for(int i =0 ;i<sysRedBallNum.length-1;i++){

106             for(int j =0; j<sysRedBallNum.length-1-i;j++){

107                 if(sysRedBallNum[j]>sysRedBallNum[j+1]){

108                     temp = sysRedBallNum[j];

109                     sysRedBallNum[j] = sysRedBallNum[j+1]; 

110                     sysRedBallNum[j+1] = temp;

111                 }

112             }

113         }

114         //输出本期中奖号码

115         System.out.println("本期的中奖号码为:");

116         System.out.println("红球:");

117         for(int i = 0;i<sysRedBallNum.length;i++){

118             System.out.print(sysRedBallNum[i]+" ");

119         }

120         System.out.println();

121         

122         System.out.println("篮球:");

123         System.out.println(sysBlueBallNum);

124     }

125 

126 }

将如上代码进行优化为:

  1 package com.xiongdilian.first;

  2 

  3 import java.util.Random;

  4 import java.util.Scanner;

  5 

  6 public class fuck {

  7     public static void main(String[] args) {

  8         start();

  9     }

 10     public static void start(){

 11         //定义变量

 12         int sysBlueBallNum; //系统生成的篮球号码

 13         int[] sysRedBallNum = new int[6];//系统生成的红球号码

 14         int userBlueBallNum;//用户输入的篮球号码

 15         int[] userRedBallNum = new int[6];//用户输入的红球号码

 16         

 17         int blueBall = 0;//篮球号码是否正确

 18         int redBallCount = 0;//红球号码正确的个数

 19         

 20         Random r = new Random();//创建生成随机数的工具类

 21         Scanner input = new Scanner(System.in);

 22         

 23         int[] redNum = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33};

 24         

 25         //随机生成蓝球号码

 26         sysBlueBallNum = r.nextInt(6)+1;

 27         

 28         //随机生成红球号码

 29         for(int i = 0;i<sysRedBallNum.length; i++){

 30             while(true){

 31                 int index = r.nextInt(33);

 32                 if(redNum[index]!=0){

 33                     sysRedBallNum[i] = redNum[index];

 34                     redNum[index] = 0;

 35                     break;

 36                 }

 37             }

 38         }

 39         

 40           //用户输入号码

 41          System.out.println("双色球彩票选号开始。。。。。祝你好运!");

 42          System.out.println("请选择篮球号码(16选1):");

 43          userBlueBallNum = input.nextInt();

 44          System.out.println("请选择红球号码(33选6):");

 45          for(int i = 0; i<userRedBallNum.length; i++){

 46              userRedBallNum[i] = input.nextInt();

 47          }

 48          

 49          

 50        //判断用户选择的号码跟系统生成的号码是否匹配

 51         //------验证篮球

 52          if(sysBlueBallNum==userBlueBallNum){

 53              blueBall = 1;

 54          }

 55          

 56          //-----验证红球

 57          for(int i= 0;i<userRedBallNum.length;i++ ){

 58              for(int j = 0;j<sysRedBallNum.length;j++){

 59                 if(userRedBallNum[i] == sysRedBallNum[j]){

 60                    redBallCount++;

 61                    break;

 62                 }

 63              }

 64          }

 65          

 66          check(blueBall,redBallCount);

 67          

 68          bubbleSort(sysRedBallNum);

 69          sysOut(sysRedBallNum,sysBlueBallNum);

 70     }

 71     

 72     //判断是否中奖了

 73     public static void check(int blueBall, int redBallCount){

 74         if(blueBall==1 && redBallCount==6){

 75              System.out.println("恭喜你中了一等奖500万!");

 76         }else if(redBallCount==6){

 77              System.out.println("恭喜你中了二等奖!");

 78         }else if(blueBall==1 && redBallCount==5){

 79              System.out.println("恭喜你中了三等奖,3000元!");

 80         }else if(redBallCount==5 || (redBallCount==4 && blueBall==1)){

 81              System.out.println("恭喜你中了四等奖,200元!");

 82         }else if(redBallCount==4 || (redBallCount==3 && blueBall==1)){

 83              System.out.println("恭喜你中了五等奖,10元!");

 84         }else if(blueBall==1){

 85              System.out.println("恭喜你中了六等奖,5元!");

 86         }else{

 87              System.out.println("革命尚未成功,同志仍需努力");

 88         }

 89     }

 90     

 91     

 92     //公布本期中奖号码(将中奖号码进行排序)

 93     public static void bubbleSort(int[] sysRedBallNum){

 94         int temp;

 95         for(int i =0 ;i<sysRedBallNum.length-1;i++){

 96             for(int j =0; j<sysRedBallNum.length-1-i;j++){

 97                 if(sysRedBallNum[j]>sysRedBallNum[j+1]){

 98                     swap(sysRedBallNum,j,j+1);

 99                 }

100             }

101         }

102     }

103     

104     //交换数据的方法

105      public static void swap(int[] arr,int a , int b){

106          int temp = arr[a];

107          arr[a] = arr[b];

108          arr[b] = temp;

109      }

110      

111      //输出本期中奖号码

112      public static void sysOut(int[] sysRedBallNum, int sysBlueBallNum){

113              System.out.println("本期的中奖号码为:");

114             System.out.println("红球:");

115             for(int i = 0;i<sysRedBallNum.length;i++){

116                 System.out.print(sysRedBallNum[i]+" ");

117             }

118             System.out.println();

119             

120             System.out.println("篮球:");

121             System.out.println(sysBlueBallNum);

122      }

123 }

 

你可能感兴趣的:(模拟)