JAVA课程设计 彩票号码产生器

如题

我这有个超级大乐透的代码在控制台输出的 还没有统计奖项概率 希望可以帮到你 :1.先说下思路 a.声明2个数组和2个变量数组分别放前区的35个数和后区的12个数,变量分别为这两个数组的长度 b.首先随机获得前区的5个号码:Random .nextInt(前区长度的变量) 获得随机数,找到第一个数组中下标为这个随机数的元素,取出放在变量中. 这   儿可以判断格式 的.可以用正则表达式判断是否为各位数,如果是的话就补全0.然后移除数组中这个元素.当然存储数组的变量要减去1的然后重复  以上的4次这样就获得了1-35中5个不重复的数字. c.同上. 2.附代码SuperJoyful.javaimport java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/**
* 以下是模拟一个超级大乐透随机选号功能,严格按概率生成
* @author Jack
*
*/
public class SuperJoyful {
// 声明一个List用于存放前区号码
private List<Integer> objFrontList = new ArrayList<Integer>();
// 声明一个List用于存放后区号码
private List<Integer> objBackList = new ArrayList<Integer>();
// 声明一个正则表达式对象,用于匹配是否是一位数字,用于输出时验证
Pattern objP = Pattern.compile("\\d");
// 所要操作的字符串
Matcher objM = null;
String[] Front = new String[5];
String[] Back = new String[2]; // 初始化摇奖号码
public void init() {
for (int i = 1; i <= 35; i++) {
objFrontList.add(i);
}
for (int i = 1; i <= 12; i++) {
objBackList.add(i);
}
} // 开始摇奖
public void beginLottery() {
Random objRandom = new Random();
int nFrontCount = 35; // 前区号码总数
int nBackCount = 12; // 后区号码总数 // 摇奖前先清空LIST,再初始化
objFrontList.clear();
//System.out.println(objFrontList);
objBackList.clear();
//System.out.println(objBackList);
this.init();
/**
* 产生5个前区号码
*/
for (int i = 0; i < 5; i++) {
//System.out.println("nFrontCount:"+nFrontCount);
// 初始时有35个前区号,随机产生一个索引
int nIndex = objRandom.nextInt(nFrontCount);
// 将选出的号码暂时存放在变量中,带正则表达式验证
int nTemp = objFrontList.get(nIndex);
String strTemp = new Integer(nTemp).toString();
// 将获得的号码与正则表达式匹配
objM = objP.matcher(strTemp);
boolean flag = objM.matches();
// 如果是一位数,则在前面补零
if (flag) {
Front[i] = ("0" + strTemp + " ");
} else {
Front[i] = (strTemp + " ");
}
// 删除LIST中该索引处的号码,因为选出一个就不再放回
objFrontList.remove(nIndex);
// 号码总数减少一个
nFrontCount--;
}
Arrays.sort(Front);
for (int n = 0; n < Front.length; n++) {
System.out.print(Front[n] + "\t");
}
System.out.print("+ ");
/**
* 产生2个后区号码
*/
for (int i = 0; i < 2; i++) {
//System.out.println("nBackCount:"+nBackCount);
// 初始时有12个后区号,随机产生一个索引
int nIndex = objRandom.nextInt(nBackCount);
// 将选出的号码暂时存放在变量中,带正则表达式验证
int nTemp = objBackList.get(nIndex);
String strTemp = new Integer(nTemp).toString();
// 将获得的号码与正则表达式匹配
objM = objP.matcher(strTemp);
boolean flag = objM.matches();
// 如果是一位数,则在前面补零
if (flag) {
Back[i] = ("0" + strTemp + " ");
} else {
Back[i] = (strTemp + " ");
}
// 删除LIST中该索引处的号码,因为选出一个就不再放回
objBackList.remove(nIndex);
// for(int n = 0; n<objBackList.size();n++){
// System.out.println("objBackList:"+objBackList.get( n ));
// }
// 号码总数减少一个
nBackCount--;
}
Arrays.sort(Back);
for (int n = 0; n < Back.length; n++) {
System.out.print(Back[n] + "\t");
}
// 产生一注后回车
System.out.println("");
} // 按要求输出多少注彩票
public void outPutLottery(int vnCount) {
for (int i = 0; i < vnCount; i++) {
this.beginLottery();
}
} /**
* @param args
*/
public static void main(String[] args) {
SuperJoyful objSJ = new SuperJoyful();
EnterConsole objEC = new EnterConsole();
// 声明一个正则表达式对象,用于匹配是否是数字
Pattern objP = Pattern.compile("\\d{1,}");
// 所要操作的字符串
Matcher objM = null;
// 接收控制台输入
String objTemp = (String) objEC.printConsole();
//String strTemp = (String)objTemp;
objM = objP.matcher(objTemp);
boolean flag = objM.matches();
int nTemp = 0;
if (flag) {
nTemp = new Integer(objTemp);
} else {
System.out.println("对不起,只能输入数字!");
}
objSJ.outPutLottery(nTemp);
}
}EnterConsole.javaimport java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class EnterConsole
{
public Object printConsole(){
System.out.print("请输入你要随机选取多少注,确认回车即可:");
BufferedReader objBR = new BufferedReader(new InputStreamReader(System.in));
String strValue = null;
try
{
strValue = (String)objBR.readLine();
}
catch ( IOException e )
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return strValue;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-22
课程辅助教学网站
电话拨号程序
Web浏览与搜索
传真收发
对Modem的控制
云台控制系统
自动报警系统
VC串口编程调试精灵
VC单片机通信
人事管理系统
企业员工考勤管理系统
简易留言本
简易论坛
在线聊天室
在线购物网站(C#)

热卖作品

超市后台管理系统
企业人力资源管理系统
课程辅助教学网站
学生档案管理系统(VB+...
电脑销售管理系统
图书管理系统
酒店管理系统
酒店客房管理系统(前台+...
在线考试系统
财务管理系统
企业工资管理系统
电子商务系统
学生成绩管理系统
人事管理系统
销售管理系统(VB+SQ...

支付宝信任公告

本站荣誉成为支付宝信任商家

最新推荐

VB类作品

财务管理系统
点灯游戏
学生档案管理系统(VB+...
医院工资管理系统
旅游资源管理系统(综合版...
POS(财务+人事+库房...
销售管理系统(VB+SQ...
图书管理系统

Delphi类作品

酒店客房管理系统(前台+...
人事档案管理系统
工资管理系统
固定资产管理系统
人力资源管理系统
库存管理系统
手机销售管理系统
远程教育管理系统

ASP类作品

课程辅助教学网站
在线考试系统
留言板(2)
在线校友录
学生成绩管理系统
在线聊天室(2)
企业网上办公系统
在线聊天室

VC类作品

电话拨号程序
Web浏览与搜索
传真收发
对Modem的控制
云台控制系统
自动报警系统
VC串口编程调试精灵
VC单片机通信

JSP类作品

简易论坛
在线聊天室
物流信息管理
企业网站
电子商务系统
企业经销存管理系统
企业OA(办公自动化系统...
人力资源管理系统

其他类作品

人事管理系统
企业员工考勤管理系统
简易留言本
贸易管理系统
小区管理系统(综合版)
会员管理系统
票据管理系统
经销存管理系统
企业员工计时和帐单管理
图片库管理系统

.NET类作品

在线购物网站(C#)
简易公司网站
在线图书管理系统(C#)
多彩网络文本编辑器(C#...
音乐合(C#)
论坛(C#)
在线服务网站(C#)
个人秘书办公系统

定做作品展示

工程图纸管理系统
电话号码查询系统
出版社信息系统
火车站售票系统
学生成绩管理系统
彩票号码查询分析系统
成绩查询系统
超市后台管理系统
电脑销售管理系统
工地工伤信息管理系统

如果帮助到您,请记得采纳为满意答案哈,谢谢!祝您生活愉快! vae.la
第2个回答  2019-09-01
符号字体制作完毕追答

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网