黑马程序员技术交流社区

标题: 双色球机选,请大神优化一下 [打印本页]

作者: 陈宁    时间: 2014-11-30 11:01
标题: 双色球机选,请大神优化一下
//双色球机选
public class DoubleColourBall {
        public static void main(String[] args) {
                int []  reds=new int[33];
                //把红球的每一个元素生成出来。
                for(int a=0;a<33;a++){
                        reds[a]=a+1;
                }
                //选6个红球
                //定义一个开关数组,用于标记生成过的下标。
                boolean[] flags =new boolean[33];
                //定义一个将会生成的红球数组。
                int [] chReds=new int[6];
                int index;//表示随机生成的下标。
                System.out.println("机选一注:");
                for(int a=0;a<6;a++){
                        do{
                                index=(int)(Math.random()*33);
                        }while(flags[index]==true);
                        flags[index]=true;
                        chReds[a]=reds[index];
                }
                //红球数组排序 :
                for(int a=0;a<chReds.length-1;a++){
                        for(int b=0;b<chReds.length-a-1;b++){
                                if(chReds[b]>chReds[b+1]){
                                        int temp=chReds[b];
                                        chReds[b]=chReds[b+1];
                                        chReds[b+1]=temp;
                                }
                        }
                }
                //遍历排序后的红球数组:
                System.out.print("红球:");
                for(int a=0;a<chReds.length;a++){
                        System.out.print(chReds[a]+" ");
                }
                System.out.print(" 蓝球 :"+(int)(Math.random()*16+1));
        }
}


作者: superjiejie    时间: 2014-11-30 11:03
之前写过一个 不过代码找不到了~~
作者: 陈宁    时间: 2014-11-30 11:10
刚才看了另一哥们写的,比较严谨,考虑到了输出时为1位数时前面要加0.这个是我没有考虑到的。不过这个倒还好解决,可以用一个固定数组,也可以用if来解决。只是看我这个代码貌似有点多了。麻烦大家优化一下。
作者: g124989452    时间: 2014-11-30 19:59
本帖最后由 g124989452 于 2014-11-30 20:04 编辑

private void red() {

                List<Integer> redNumber = new ArrayList<Integer>();
                for (int i = 1; i < 34; i++) {
                        redNumber.add(i);
                }
                Collections.shuffle(redNumber);
                Set<Integer> redSort = new TreeSet<Integer>();
                for (int i = 0; i < 6; i++) {
                        redSort.add(redNumber.get(i));
                }
                for (Integer red : redSort) {
                        System.out.print((red > 9 ? red : "0" + red)+" ");
                }
        }

        private void blue() {
                int blue = new Random().nextInt(16)+1;
                System.out.println(" " + (blue > 9 ? blue : "0" + blue));
        }




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