黑马程序员技术交流社区

标题: java实现机打双色球小程序 [打印本页]

作者: smhjx2006    时间: 2013-6-6 08:51
标题: java实现机打双色球小程序
/**
*以前买了一张双色球的彩票,看到了上面的数字,好像可以用程序实现!
*就用java实现了一下,以后买双球就可以自己机打了!
*红球:1~~~33:取出6个,不能重复,按从小到大的顺序输出
*蓝球:1~~~16:取出1个。放在红球后面输出
*/
import java.util.*;
class DoubleColorBall
{
       public static void main(String[] args)
       {
              System.out.println(create());
       }
       public static String create()
       {
              String[] red = new String[33];
              //System.out.println(redPoll[1]);//null
              for(int i=0; i<red.length;i++)
              {
                     char[] ch = {'0','0'};//定义字符数组,初始化位00
                     String s = Integer.toString(i+1);//{"1"...."33"}
                     char[] num = s.toCharArray();//将{"1"...."33"}变成对应的{'1'....'33'}
                     System.arraycopy(num,0,ch,ch.length-num.length,num.length);//通过数组赋值的方式完成1变成01,2变成02
                     String ball = new String(ch);
                     red[i] = ball;
              }
              String[] blue = "01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16".split(",");
              boolean[] used = new boolean[red.length];//给每个红球定义一个标记,当该球被去除时,就将对应标记设置成true(表示已经使用了)
              Random r = new Random();
              String[] all = new String[7];
              for(int i=0;i<6;i++)
              {
                     int idx;
                     do
                     {
                            idx = r.nextInt(red.length);//0~~32
                     }
                     while (used[idx]);//如果使用了,继续找下一个
                     used[idx] = true;//标记使用了
                     all[i] = red[idx];//取出一个未使用的红球
              }
              all[all.length-1] = "99";//因为需要先将获得的红球排序,所以为了将最后一个位置保留给蓝球,所以先用99占位,这样即使排序最后一位仍然是99
              Arrays.sort(all);
              all[all.length-1] = blue[r.nextInt(blue.length)];//用获得的蓝球将99覆盖
              return Arrays.toString(all);
       }
}

作者: 许庭洲    时间: 2013-6-11 09:09
值得学习ing!




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