黑马程序员技术交流社区

标题: 新人学习java基础后写的模拟双色球开奖的程序 [打印本页]

作者: zhyhbk    时间: 2014-7-8 19:58
标题: 新人学习java基础后写的模拟双色球开奖的程序
     在网上看到某位大牛的思路,按着思路写下来的。
  1. /**
  2. 模拟双色球开奖系统
  3. 1.系统随机产生六个红球和一个蓝球
  4. 2.用户选择红球和蓝球号码
  5. 3.统计用户的中奖个数
  6. 4.开奖并输出系统产生的红球和蓝球号码
  7. */
  8. import java.util.Scanner;
  9. import java.util.Random;
  10. public class homework
  11. {
  12.         public static void main(String[] args){
  13.                 int sysBlueBall;
  14.                 int[] sysRedBall = new int[6];
  15.                 Random ran = new Random();
  16.                 sysBlueBall = ran.nextInt(16)+1;//系统随机产生的蓝球
  17.                 int[] red = {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};
  18.                 //随机生成红球(这里不用Random方法,是防止因产生相同的号码,而进行比较运算,增加复杂度)
  19.                 for (int i=0;i<sysRedBall.length ;i++ )
  20.                 {
  21.                         while (true)//强制循环
  22.                         {
  23.                                 int num = ran.nextInt(33);//随机产生0至32的数用作red数组的下标
  24.                                 if (red[num]!=0)
  25.                                
  26.                                 {
  27.                                         sysRedBall[i] =  red[num];
  28.                                
  29.                                 red[num]=0;
  30.                                 break;       
  31.                                 }
  32.                         }
  33.                 }
  34.                  
  35.                 Scanner input = new Scanner(System.in);
  36.                 int userBlueBall;
  37.                 int[] userRedBall = new int[6];
  38.                 System.out.println("请输入一个蓝球号码(1至16之间):");
  39.                 userBlueBall = input.nextInt();        //用户选择的蓝球号码
  40.                 System.out.println("请输入6个红球号码(1至33之间):");
  41.                 for (int i=0;i< userRedBall.length ;i++ )
  42.                 {
  43.                         userRedBall[i] = input.nextInt();  //用户选择的红球号码
  44.                 }

  45.                  int blueNum = 0;
  46.                  int redNum = 0;//用于存储选中的蓝球和红球个数
  47.                  if (sysBlueBall==userBlueBall)
  48.                   {
  49.                           blueNum = 1;//判断蓝球是否选中
  50.                   }               
  51.                   for (int i=0;i<userRedBall.length ;i++ )
  52.                   {
  53.                           for (int j=0;j<sysRedBall.length ;j++ )
  54.                           {
  55.                                   if (userRedBall[i]==sysRedBall[j])
  56.                                   {
  57.                                            redNum++;  //累计红球选中个数
  58.                                   }                  
  59.                                   break;
  60.                           }
  61.                   }
  62.                   //中奖情况
  63.                   if (blueNum == 1 && redNum ==6)
  64.                   {
  65.                           System.out.println("恭喜你中了一等奖!");
  66.                   }else if (redNum ==6){
  67.                           System.out.println("恭喜你中了二等奖!");       
  68.                   }else if (blueNum == 1 && redNum ==5)
  69.                   {
  70.                           System.out.println("恭喜你中了三等奖!");
  71.                   }else if (redNum ==5 || (redNum ==4 && blueNum == 1))
  72.                   {
  73.                           System.out.println("恭喜你中了四等奖!");
  74.                   }else if (redNum ==4 || (redNum ==3 && blueNum == 1))
  75.                   {
  76.                           System.out.println("恭喜你中了五等奖!");
  77.                   }else if (blueNum == 1)
  78.                   {
  79.                           System.out.println("恭喜你中了六等奖!");
  80.                   }else {
  81.                             System.out.println("没有中奖哦!请继续努力");
  82.                   }
  83.             //使用冒泡算法给系统红球排序
  84.                 int temp;
  85.                 for (int i=0;i<sysRedBall.length-1 ;i++ )
  86.                 {
  87.                         for (int j=0;j<sysRedBall.length-1-i ;j++ )
  88.                         {
  89.                            if (sysRedBall[j]>sysRedBall[j+1])
  90.                            {
  91.                                    temp = sysRedBall[j];
  92.                                    sysRedBall[j] = sysRedBall[j+1];
  93.                                    sysRedBall[j+1] = temp;
  94.                            }
  95.                         }
  96.                 }
  97.                 //输出蓝球号码和红球号码
  98.                 System.out.println("本期蓝球号码为: "+sysBlueBall);
  99.                 System.out.print("本期红球号码为: ");
  100.                 for (int i=0;i <sysRedBall.length ;i++ )
  101.                 {
  102.                         System.out.print(sysRedBall[i]+" ");
  103.                 }
  104.                 System.out.println();

  105.         }
  106. }
复制代码
其中系统随机产生红球没有用Random方法是因为防止随机产生重复数字,而增加反复比较的麻烦。



作者: jeromechen    时间: 2014-7-8 22:21
牛啊,向你学习啊,学以致用不错
作者: 杨冬冬    时间: 2014-7-8 23:19
向你致敬,骚年
作者: Be_myself    时间: 2014-7-8 23:27
不错不错, 继续努力




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