自己写了个双色球的小程序,是使用数组来实现的,代码有点小长,不知道还能不能优化。- /*
- 双色球
- 本来开始是使用两个数组的,最后发现可以合并成一个,简化了一些代码。不过依然很长的代码
- 这个程序和其他的不一样的是在实现红球不重复这一块儿
- */
- class ShuangSeQiu
- {
- public static void main(String[] args) throws Exception
- {
- int[] ball =new int[7];
- getBall(ball);
- sortBall(ball);
- print(ball);
- }
- //随机产生红球(1-33)和蓝球(1-15),并存入数组中
- public static void getBall(int[] ball)
- {
- //首先产生红球,存在数组的前六位
- for (int x=0;x<ball.length-1 ;x++ )
- {
- ball[x]=(int)(Math.random()*32+1);
- //判断新产生的数是否和以前存在数组中的数相等,保证数组中的数都不相同
- while(x!=0)
- {
- for (int y=0;y<x ;y++ )//遍历已经产生的ball数组的同时添加判断条件
- {
- if(ball[x]!=ball[y])
- continue;
- else
- {
- x--;//让数组的初始化返回一步,从新产生数覆盖以前数组中的数
- break;
- }
- }
- break;
- }
- }
- //当所有红球产生后,在数组末尾生成蓝球即可
- ball[ball.length-1]=(int)(Math.random()*15+1);
- }
- //对数组进行排序
- public static void sortBall(int[] ball)
- {
- //只需要对数组前六位进行排序即可
- for (int x=0;x<ball.length-1-1 ;x++ )
- {
- for (int y=x+1;y<ball.length-1 ;y++ )
- {
- if(ball[x]>ball[y])
- {
- int temp=ball[x];
- ball[x]=ball[y];
- ball[y]=temp;
- }
- }
- }
- }
- //打印结果
- public static void print(int[] arr)
- {
- //先打印前六位红球
- for (int x=0;x<arr.length-1 ;x++ )
- {
- System.out.print(((arr[x]<10?("0"+arr[x]):arr[x]))+"\t");
- }
- //再打印最后一位蓝球
- System.out.print("蓝球 "+(arr[arr.length-1]<10?("0"+arr[arr.length-1]):arr[arr.length-1]));
- }
- }
复制代码 |