黑马程序员技术交流社区
标题:
【分享】自己使用数组实现的双色球程序,代码是不是有...
[打印本页]
作者:
孟浩然
时间:
2012-6-18 20:41
标题:
【分享】自己使用数组实现的双色球程序,代码是不是有...
自己写了个双色球的小程序,是使用数组来实现的,代码有点小长,不知道还能不能优化。
/*
双色球
本来开始是使用两个数组的,最后发现可以合并成一个,简化了一些代码。不过依然很长的代码
这个程序和其他的不一样的是在实现红球不重复这一块儿
*/
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]));
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2