java 制作抽奖小程序
2、中奖机率(如1、1%;2、2%,3、97%);
1楼太粗糙了吧,要可以添加奖项,和设置中率! 展开
帮你做了一个,不知是否满意呢?
import java.applet.Applet;
import java.awt.Button;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.util.Random;
import java.util.Vector;
public class Lottery extends Applet {
private static final long serialVersionUID = 1L;
int w,h;
Button ok,out,setup;
String[] msg;
TextField[] gaiLv;
TextField[] jiangPin;
int mx,ml;
int maxNum;
Random ran;
Vector<Integer> fist;
Vector<Integer> sec;
Vector<Integer> third;
Vector<Integer> lucky;
boolean lot=false;
boolean iserr=false;
boolean issetup=false;
String mesg="输入错误";
String priseMsg="继续努力!";
public void init(){
w=400;
h=220;
mx=20;
ml=40;
ran=new Random();
this.setSize(w, h);
this.setLayout(null);
ok=new Button("抽奖");
out=new Button("退出");
setup=new Button("确认设置");
msg=new String[4];
msg[0]="一等奖";
msg[1]="二等奖";
msg[2]="三等奖";
msg[3]="幸运奖";
gaiLv=new TextField[4];
jiangPin=new TextField[4];
for(int i=0;i<4;i++){
gaiLv[i]=new TextField("0.0"+(i+1));
this.add(gaiLv[i]);
gaiLv[i].setBounds(mx+ml, 75+i*26, 60, 18);
jiangPin[i]=new TextField();
this.add(jiangPin[i]);
jiangPin[i].setBounds(mx+ml*3, 75+i*26, 80, 18);
}
this.add(ok);
ok.setBounds(260, 180, 60, 28);
ok.addActionListener(new LotButtonAction(this));
this.add(out);
out.setBounds(330, 180, 60, 28);
out.addActionListener(new LotButtonAction(this));
this.add(setup);
setup.setBounds(110, 180, 80, 24);
setup.addActionListener(new LotButtonAction(this));
}
public void paint(Graphics g){
g.setColor(Color.white);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(new Color(230,255,230));
g.fillRect(0, 0, w, 30);
g.setColor(Color.BLUE);
g.drawString("JAVA抽奖系统", 130, 20);
g.setColor(Color.ORANGE);
g.drawRect(10, 40, 230, 170);
g.setColor(Color.BLACK);
g.drawString("设置", mx, 60);
g.drawString("概率", mx+ml, 60);
g.drawString("奖品", mx+ml*3, 60);
for(int i=0;i<msg.length;i++){
g.setColor(new Color(255-(i*30),45,89));
g.drawString(msg[i], 20, 90+i*26);
}
if(lot==true){
g.setColor(new Color(ran.nextInt(255),ran.nextInt(255),ran.nextInt(255)));
if(priseMsg.length()<=7){
g.drawString(priseMsg, 260, 100);
}else{
g.drawString(priseMsg.substring(0, 5), 260, 100);
g.drawString(priseMsg.substring(5), 260, 120);
}
}
if(iserr==true){
g.drawString(mesg, 260, 100);
}
}
public void getLucky(){
float firu=1;
float secu=1;
float thiu=1;
float fouu=1;
float minu=1;
if(gaiLv[0].getText().trim().length()>1){
firu=Float.parseFloat(gaiLv[0].getText());
if(firu<=0||firu>=1){
iserr=true;
return;
}
if(firu<minu){
minu=firu;
}
}
if(gaiLv[1].getText().trim().length()>1){
secu=Float.parseFloat(gaiLv[1].getText());
if(secu<=0||secu>=1){
iserr=true;
return;
}
if(secu<minu){
minu=secu;
}
}
if(gaiLv[2].getText().trim().length()>1){
thiu=Float.parseFloat(gaiLv[2].getText());
if(thiu<=0||thiu>=1){
iserr=true;
return;
}
if(thiu<minu){
minu=thiu;
}
}
if(gaiLv[3].getText().trim().length()>1){
fouu=Float.parseFloat(gaiLv[3].getText());
if(fouu<=0||fouu>=1){
iserr=true;
return;
}
if(fouu<minu){
minu=fouu;
}
}
if(minu>=1||minu<=0){
iserr=true;
return;
}
float aNum=1/minu;
maxNum=(int)aNum;
int count=(int)(firu/minu);
if(firu!=1){
fist=getLotteryVec(maxNum,count);
}else{
fist.removeAllElements();
}
count=(int)(secu/minu);
if(secu!=1){
sec=getLotteryVec(maxNum,count);
}else{
sec.removeAllElements();
}
count=(int)(thiu/minu);
if(thiu!=1){
third=getLotteryVec(maxNum,count);
}else{
third.removeAllElements();
}
count=(int)(fouu/minu);
if(fouu!=1){
lucky=getLotteryVec(maxNum,count);
}else{
lucky.removeAllElements();
}
issetup=true;
iserr=false;
}
protected Vector<Integer> getLotteryVec(int maxNum,int num){
Vector<Integer> result=new Vector<Integer>();
for(int i=0;i<num;i++){
result.add(ran.nextInt(maxNum));
}
return result;
}
protected int getaNum(){
return ran.nextInt(maxNum);
}
public int isLucky(int pNum){
for(int i=0;i<fist.size();i++){
if(fist.get(i)==pNum){
return 1;
}
}
for(int i=0;i<sec.size();i++){
if(sec.get(i)==pNum){
return 2;
}
}
for(int i=0;i<third.size();i++){
if(third.get(i)==pNum){
return 3;
}
}
for(int i=0;i<lucky.size();i++){
if(lucky.get(i)==pNum){
return 4;
}
}
return -1;
}
public void ButtonActionPerformed(ActionEvent e){
String acName=e.getActionCommand();
if(acName.equals("抽奖")){
if(issetup==false){
priseMsg="请先设置参数!";
lot=true;
repaint();
lot=false;
return;
}
lot=true;
priseMsg=getResult(getaNum());
repaint();
// lot=false;
}else if(acName.equals("退出")){
this.setVisible(false);
this.stop();
this.destroy();
System.exit(0);
}else if(acName.equals("确认设置")){
lot=false;
getLucky();
repaint();
}
}
public String getResult(int num){
int resu=isLucky(num);
String result="";
switch(resu){
case -1:
result="继续努力!";
break;
case 1:
result="恭喜你!一等奖!\n获得"+jiangPin[0].getText();
break;
case 2:
result="恭喜你!二等奖!\n获得"+jiangPin[1].getText();
break;
case 3:
result="恭喜你!三等奖!\n获得"+jiangPin[2].getText();
break;
case 4:
result="恭喜你!幸运奖!\n获得"+jiangPin[3].getText();
break;
default:
result="继续努力!";
}
return result+num;
}
}
class LotButtonAction implements java.awt.event.ActionListener{
Lottery su;
public LotButtonAction(Lottery bun){
this.su=bun;
}
@Override
public void actionPerformed(ActionEvent e) {
su.ButtonActionPerformed(e);
}
}
public class tEST {
public static void main(String[] args) {
System.out.println("Begin:");
Random random = new Random();
int i = random.nextInt(101);
if(i==1){
System.out.println("1、MP3.");
}else if(i==2||i==3){
System.out.println("2、手机.");
}else{
System.out.println("3、谢谢光临.");
}
}
}
要可以添加奖项,和设置中率!
做好了 可是这边只能发999个字,发不过去呀 上班时间没事做 帮你写的 测试通过...功能齐全
我开了一个问题,贴在里面
http://zhidao.baidu.com/question/258279654.html?fr=middle_ask
要不是时间急,我不会来的,我做了一个,效率不怎么好,想找一个参考!
可以参考一下我的方案?
弄一个List分别是奖项跟中奖率
摇奖方法:
然后从按照一个顺序减去这个中奖率,什么时候随机出来的数字小于等于0了,就是这个奖项了
调用摇奖方法前,将List生成,并且当参数传进去,随便添加