黑马程序员技术交流社区

标题: 12选5的彩票 可购买可兑奖~想试手气的抓紧了 [打印本页]

作者: xuxu5112    时间: 2015-8-29 23:56
标题: 12选5的彩票 可购买可兑奖~想试手气的抓紧了
本帖最后由 xuxu5112 于 2015-8-30 00:05 编辑
  1. import java.util.Scanner;
  2. class Game {
  3.         public static void main(String[] args) {
  4.                 int[] arr =        buy();                                //购买彩票
  5.                 int[] brr = creatLottery();     //开奖
  6.                 int x = compare(arr,brr);                //比较购买的彩票和开奖的号码
  7.                 contrastNumber(x);                                //兑奖
  8.         }

  9.         public static int[] buy() {   //定义一个方法buy 卖彩票
  10.                 int[] arr = new int[5];          //创建一个数组用于存储手购买的彩票号码
  11.                 for (int i=1;i<=5 ;i++ ) {
  12.                         Scanner sc = new Scanner(System.in);
  13.                         System.out.println("请输入您想购买的号码:");
  14.                         arr[i-1] = sc.nextInt();
  15.                         
  16.                 }
  17.                 System.out.println("您购买的彩票是:");
  18.                 print(arr);
  19.                 return arr;
  20.         }

  21.         public static void print(int[] arr){  //定义方法print用于打印 数组
  22.          for (int i = 0;i < arr.length ;i++ ) {
  23.                  System.out.print(arr[i]+",");
  24.          }
  25.         }

  26.         public static int[] creatLottery(){        //定义 方法creatLottery()生成彩票
  27.                 int[] arr = new int[5];
  28.                 int i = 0;
  29.         w:        while (true) {                                        //避免重复数的出现
  30.                         int num=(int)(Math.random()*12)+1;
  31.                         if (num == arr[i]) {
  32.                                 continue w;
  33.                         }else
  34.                                 arr[i]=num;
  35.                         i++;
  36.                         if(i==arr.length)
  37.                                 break;
  38.         }
  39.         System.out.println("\n"+"本期12选5的中奖号码是:");
  40.                 System.out.println();
  41.                 print(arr);
  42.                 return arr;
  43.         }
  44.         
  45.         
  46.         
  47.         public static void contrastNumber(int sum){//定义方法contrastNumber()判断是否中奖
  48.                 switch (sum) {
  49.                 case 0:
  50.                         System.out.println("倒霉蛋,一个号码都没中");
  51.                         break;
  52.                 case 1:
  53.                         System.out.println("做好事不留名捐献2元钱");
  54.                         break;
  55.                 case 2:
  56.                         System.out.println("二狗,汪汪汪汪汪汪 20块");
  57.                         break;
  58.                 case 3:
  59.                         System.out.println("三等奖,10000赚了一笔");
  60.                         break;
  61.                 case 4:
  62.                         System.out.println("二等奖,200w报警了");
  63.                         break;
  64.                 case 5:
  65.                         System.out.println("一等奖,500w运气用光了以后买彩票也中不了了");
  66.                         break;               
  67.                
  68.                 }
  69.         }

  70.         public static int compare(int[] arr,int[] brr){//比较数组中相同元素的个数
  71.                 int sum = 0;

  72.                 for (int i=0;i < arr.length ;i++ ) {
  73.                         for (int j=0;j < brr.length ;j++ ) {
  74.                                 if (arr[i] == brr[j]) {
  75.                                         sum ++;
  76.                                         arr[i]= -1;  //  -1 ,-2 都是flag用于去掉重复项
  77.                                         brr[j]= -2;
  78.                                         //System.out.println(arr[i]);
  79.                                         break;
  80.                                 }
  81.                         }
  82.                 }
  83.                 System.out.println("\n"+sum);
  84.                 return sum;
  85.         }


  86.         }
  87.         
复制代码

999999.jpg (71.6 KB, 下载次数: 13)

999999.jpg

作者: fighting8    时间: 2015-8-30 09:42
不错  挺有意思的
作者: chensheng06    时间: 2015-8-30 11:11
牛逼的。。。
作者: visen    时间: 2015-8-30 15:12
赞一个!!!!
作者: 懒懒~伍    时间: 2015-8-30 18:37
玩的挺嗨皮!
作者: xuxu5112    时间: 2015-8-30 20:54
白天玩的时候发现creatLottery()中避免重复数部分并不能真的避免重复 所以改进了下代码如下:
  1. import java.util.Scanner;
  2. class Game {
  3.         public static void main(String[] args) {
  4.                 int[] arr =        buy();                                //购买彩票
  5.                 int[] brr = creatLottery();     //开奖
  6.                 int x = compare(arr,brr);                //比较购买的彩票和开奖的号码
  7.                 contrastNumber(x);                                //兑奖
  8.         }

  9.         public static int[] buy() {   //定义一个方法buy 卖彩票
  10.                 int[] arr = new int[5];          //创建一个数组用于存储手购买的彩票号码
  11.                 for (int i=1;i<=5 ;i++ ) {
  12.                         Scanner sc = new Scanner(System.in);
  13.                         System.out.println("请输入您想购买的号码:");
  14.                         arr[i-1] = sc.nextInt();
  15.                        
  16.                 }
  17.                 System.out.println("您购买的彩票是:");
  18.                 print(arr);
  19.                 return arr;
  20.         }

  21.         public static void print(int[] arr){  //定义方法print用于打印 数组
  22.          for (int i = 0;i < arr.length ;i++ ) {
  23.                  System.out.print(arr[i]+",");
  24.          }
  25.         }

  26.         public static int[] creatLottery(){        //定义 方法creatLottery()生成彩票
  27.                 int[] arr = new int[5];
  28.                 int i = 0;
  29.         w:        while (true) {                                        //避免重复数的出现
  30.                         int num=(int)(Math.random()*12)+1;
  31.                         if (indexOf(arr,num)) {
  32.                                 continue w;
  33.                         }else
  34.                                 arr[i]=num;
  35.                         i++;
  36.                         if(i==arr.length)
  37.                                 break;
  38.         }
  39.         System.out.println("\n"+"本期12选5的中奖号码是:");
  40.                 System.out.println();
  41.                 print(arr);
  42.                 return arr;
  43.         }

  44.         public static boolean indexOf(int[] arr,int x) {//判断数组arr中是否有x;
  45.                 for (int i = 0;i<arr.length ;i++) {
  46.                         if (arr[i] == x) {
  47.                                 return true;
  48.                         }
  49.                 }
  50.                 return false;
  51.         }
  52.        
  53.        
  54.        
  55.         public static void contrastNumber(int sum){//定义方法contrastNumber()判断是否中奖
  56.                 switch (sum) {
  57.                 case 0:
  58.                         System.out.println("倒霉蛋,一个号码都没中");
  59.                         break;
  60.                 case 1:
  61.                         System.out.println("做好事不留名捐献2元钱");
  62.                         break;
  63.                 case 2:
  64.                         System.out.println("二狗,汪汪汪汪汪汪 20块");
  65.                         break;
  66.                
  67.                 case 3:
  68.                         System.out.println("三等奖,10000赚了一笔");
  69.                         break;
  70.                 case 4:
  71.                         System.out.println("二等奖,200w报警了");
  72.                         break;
  73.                 case 5:
  74.                         System.out.println("一等奖,500w运气用光了以后买彩票也中不了了");
  75.                         break;               
  76.                
  77.                 }
  78.         }

  79.         public static int compare(int[] arr,int[] brr){//比较数组中相同元素的个数
  80.                 int sum = 0;

  81.                 for (int i=0;i < arr.length ;i++ ) {
  82.                         for (int j=0;j < brr.length ;j++ ) {
  83.                                 if (arr[i] == brr[j]) {
  84.                                         sum ++;
  85.                                         arr[i]= -1;  //  -1 ,-2 都是flag用于去掉重复项
  86.                                         brr[j]= -2;
  87.                                         //System.out.println(arr[i]);
  88.                                         break;
  89.                                 }
  90.                         }
  91.                 }
  92.                 System.out.println("\n"+sum);
  93.                 return sum;
  94.         }


  95.         }
  96.        
复制代码

作者: Wqi    时间: 2015-8-30 21:13
这算法中奖的概率比实际的低多了......
作者: 夕阳游子    时间: 2015-8-30 21:21
厉害,要是中了,发钱啊
作者: G_Y_C黑马    时间: 2015-8-30 22:42
老师说,高手不要炫耀代码……不过确实挺牛,赞一个
作者: hutudan1993    时间: 2015-8-30 22:45
哇塞,好牛的样子呢.....加油哟..非常棒
作者: binarycoc    时间: 2015-8-30 23:19
相当给力




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2