您好,欢迎访问一九零五行业门户网

基于Java如何实现大乐透号码生成器

一、题目大乐透是中国体育彩票的一种玩法,是国家体育总局体彩中心为适应市场发展需要,丰富体育彩票的市场结构,经过慎重研究和广泛的市场调研,于2007年5月28日向全国推出的一种全新大盘彩票玩法。到现在还在运行。
玩法:前区“35选5”+后区“12选2”
基本玩法是,从135随机数字中选5个不重复数字, 112随机数字中选2个不重复数字。如果完全跟中奖号码一样,则中了一等奖。
实现:实现一个大乐透号码生成器。
二、解题思路创建一个类:superfun
使用superfun继承jframe构建窗体
窗体主要有三部分组成:输入部分;显示部分;生成号码按钮
通过random类的实例生成伪随机数流。
随机生成前段5个号码的方法:getstartnumber()
随机生成后段2个号码的方法:getendnumber()
三、代码详解package com.xiaoxuzhu;import java.awt.borderlayout;import java.awt.eventqueue;import java.awt.font;import java.awt.gridlayout;import java.awt.event.actionevent;import java.awt.event.actionlistener;import java.util.arraylist;import java.util.collections;import java.util.list;import java.util.random;import javax.swing.jbutton;import javax.swing.jframe;import javax.swing.jlabel;import javax.swing.jpanel;import javax.swing.jscrollpane;import javax.swing.jtextarea;import javax.swing.jtextfield;import javax.swing.swingconstants;import javax.swing.uimanager;import javax.swing.border.emptyborder;/** * description: 大乐透 * * @author xiaoxuzhu * @version 1.0 * * <pre> * 修改记录: * 修改后版本 修改人 修改日期 修改内容 * 2022/4/30.1 xiaoxuzhu 2022/4/30 create * </pre> * @date 2022/4/30 */public class superfun extends jframe { /** * */ private static final long serialversionuid = 6787592245621788484l; private jpanel contentpane; private jtextfield textfield; private jtextarea textarea; /** * launch the application. */ public static void main(string[] args) { try { uimanager .setlookandfeel("com.sun.java.swing.plaf.nimbus.nimbuslookandfeel"); } catch (throwable e) { e.printstacktrace(); } eventqueue.invokelater(new runnable() { public void run() { try { superfun frame = new superfun(); frame.setvisible(true); } catch (exception e) { e.printstacktrace(); } } }); } /** * create the frame. */ public superfun() { setdefaultcloseoperation(jframe.exit_on_close); setbounds(100, 100, 450, 300); contentpane = new jpanel(); contentpane.setborder(new emptyborder(5, 5, 5, 5)); contentpane.setlayout(new borderlayout(0, 0)); setcontentpane(contentpane); settitle("大乐透号码生成器"); jpanel panel = new jpanel(); contentpane.add(panel, borderlayout.north); panel.setlayout(new gridlayout(1, 2, 5, 5)); jlabel label = new jlabel("请输入号码组数:"); label.setfont(new font("微软雅黑", font.plain, 18)); label.sethorizontalalignment(swingconstants.center); panel.add(label); textfield = new jtextfield(); textfield.setfont(new font("微软雅黑", font.plain, 18)); panel.add(textfield); textfield.setcolumns(10); jpanel buttonpanel = new jpanel(); contentpane.add(buttonpanel, borderlayout.south); jbutton button = new jbutton("生成号码"); button.addactionlistener(new actionlistener() { public void actionperformed(actionevent e) { int times = integer.parseint(textfield.gettext());// 获得用户输入的需要生成的中奖号码个数 // 省略提示购买数量太多的代码 stringbuilder sb = new stringbuilder();// 创建字符串生成器对象 for (int i = 0; i < times; i++) { list<string> startlist = getstartnumber();// 获得前段号码的集合 list<string> endlist = getendnumber();// 获得后段号码的集合 for (int m = 0; m < startlist.size(); m++) { sb.append(startlist.get(m));// 在字符串生成器中添加前段号码 } sb.append(" "); for (int n = 0; n < endlist.size(); n++) { sb.append(endlist.get(n));// 在字符串生成器中添加后段号码 } sb.append("\n"); } textarea.settext(sb.tostring());// 在文本域中显示号码 } }); button.setfont(new font("微软雅黑", font.plain, 18)); buttonpanel.add(button); jscrollpane scrollpane = new jscrollpane(); contentpane.add(scrollpane, borderlayout.center); textarea = new jtextarea(); textarea.setfont(new font("微软雅黑", font.plain, 18)); scrollpane.setviewportview(textarea); } /** * 随机生成前段5个号码的方法 * * @return */ public list<string> getstartnumber() { list<string> list = new arraylist<string>(); // 创建前段号码集合 string luckynumber = ""; for (int i = 1; i < 36; i++) { // 初始化前段号码集合 if (i < 10) { list.add("0" + i + " ");// 添加0~9的号码 } else { list.add("" + i + " ");// 添加大于9的号码 } } int roundindex = 0; list<string> luckylist = new arraylist<string>(); // 保存前段号码的list集合 for (int j = 0; j < 5; j++) { int amount = list.size(); // 获取前段号码的个数 random r = new random(); // 创建并实例化random的对象 roundindex = r.nextint(amount); // 获取一个0到amount-1的随机数 luckynumber = list.get(roundindex); // 获取幸运数字 luckylist.add(luckynumber); // 添加luckylist中 list.remove(roundindex); // 移除刚刚产生的号码 } collections.sort(luckylist); // 对前段号码进行排序 return luckylist; } /** * 随机生成后段2个号码的方法 * * @return */ public list<string> getendnumber() { list<string> list = new arraylist<string>(); // 创建后段号码集合 string luckynumber = ""; for (int i = 1; i < 13; i++) { // 初始化后段号码集合 if (i < 10) { list.add("0" + i + " ");// 添加0~9的号码 } else { list.add("" + i + " ");// 添加大于9的号码 } } int roundindex = 0; list<string> luckylist = new arraylist<string>(); // 保存后段号码的list集合 for (int j = 0; j < 2; j++) { int amount = list.size(); // 获取后段号码的个数 random r = new random(); // 创建并实例化random的对象 roundindex = r.nextint(amount); // 获取一个0到amount-1的随机数 luckynumber = list.get(roundindex); // 获取幸运数字 luckylist.add(luckynumber); // 添加luckylist中 list.remove(roundindex); // 移除刚刚产生的号码 } collections.sort(luckylist); // 对后段号码进行排序 return luckylist; }}
以上就是基于java如何实现大乐透号码生成器的详细内容。
其它类似信息

推荐信息