黑马程序员技术交流社区
标题:
新人学习java基础后写的模拟双色球开奖的程序
[打印本页]
作者:
zhyhbk
时间:
2014-7-8 19:58
标题:
新人学习java基础后写的模拟双色球开奖的程序
在网上看到某位大牛的思路,按着思路写下来的。
/**
模拟双色球开奖系统
1.系统随机产生六个红球和一个蓝球
2.用户选择红球和蓝球号码
3.统计用户的中奖个数
4.开奖并输出系统产生的红球和蓝球号码
*/
import java.util.Scanner;
import java.util.Random;
public class homework
{
public static void main(String[] args){
int sysBlueBall;
int[] sysRedBall = new int[6];
Random ran = new Random();
sysBlueBall = ran.nextInt(16)+1;//系统随机产生的蓝球
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};
//随机生成红球(这里不用Random方法,是防止因产生相同的号码,而进行比较运算,增加复杂度)
for (int i=0;i<sysRedBall.length ;i++ )
{
while (true)//强制循环
{
int num = ran.nextInt(33);//随机产生0至32的数用作red数组的下标
if (red[num]!=0)
{
sysRedBall[i] = red[num];
red[num]=0;
break;
}
}
}
Scanner input = new Scanner(System.in);
int userBlueBall;
int[] userRedBall = new int[6];
System.out.println("请输入一个蓝球号码(1至16之间):");
userBlueBall = input.nextInt(); //用户选择的蓝球号码
System.out.println("请输入6个红球号码(1至33之间):");
for (int i=0;i< userRedBall.length ;i++ )
{
userRedBall[i] = input.nextInt(); //用户选择的红球号码
}
int blueNum = 0;
int redNum = 0;//用于存储选中的蓝球和红球个数
if (sysBlueBall==userBlueBall)
{
blueNum = 1;//判断蓝球是否选中
}
for (int i=0;i<userRedBall.length ;i++ )
{
for (int j=0;j<sysRedBall.length ;j++ )
{
if (userRedBall[i]==sysRedBall[j])
{
redNum++; //累计红球选中个数
}
break;
}
}
//中奖情况
if (blueNum == 1 && redNum ==6)
{
System.out.println("恭喜你中了一等奖!");
}else if (redNum ==6){
System.out.println("恭喜你中了二等奖!");
}else if (blueNum == 1 && redNum ==5)
{
System.out.println("恭喜你中了三等奖!");
}else if (redNum ==5 || (redNum ==4 && blueNum == 1))
{
System.out.println("恭喜你中了四等奖!");
}else if (redNum ==4 || (redNum ==3 && blueNum == 1))
{
System.out.println("恭喜你中了五等奖!");
}else if (blueNum == 1)
{
System.out.println("恭喜你中了六等奖!");
}else {
System.out.println("没有中奖哦!请继续努力");
}
//使用冒泡算法给系统红球排序
int temp;
for (int i=0;i<sysRedBall.length-1 ;i++ )
{
for (int j=0;j<sysRedBall.length-1-i ;j++ )
{
if (sysRedBall[j]>sysRedBall[j+1])
{
temp = sysRedBall[j];
sysRedBall[j] = sysRedBall[j+1];
sysRedBall[j+1] = temp;
}
}
}
//输出蓝球号码和红球号码
System.out.println("本期蓝球号码为: "+sysBlueBall);
System.out.print("本期红球号码为: ");
for (int i=0;i <sysRedBall.length ;i++ )
{
System.out.print(sysRedBall[i]+" ");
}
System.out.println();
}
}
复制代码
其中系统随机产生红球没有用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