Ⅰ 做一個java的抽獎系統
用隨機的辦法 來 作為抽獎結果 是誤人的。。。。
理想辦法是生成抽獎池
然後以隨機數的辦法生成數據進入抽獎池中抽取獎品
並且加入判斷語句來過濾已經抽取出來的獎品 一直到獎池為空
Ⅱ java抽獎程序,可設置不同獎品獲得概率
importjava.awt.EventQueue;
importjava.awt.TextArea;
importjava.awt.TextField;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.util.Random;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JTextArea;
importjavax.swing.JTextField;
importjavax.swing.border.EmptyBorder;
{
privateJPanelcontentPane;
privateJTextFieldtextFieldA;
privateJTextFieldtextFieldB;
privateJTextFieldtextFieldC;
privateTextFieldtextField;
;
privateJTextAreatextArea;
/**
*Launchtheapplication.
*/
publicstaticvoidmain(String[]args){
EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
try{
LuckySelectframe=newLuckySelect();
frame.setVisible(true);
}catch(Exceptione){
e.printStackTrace();
}
}
});
}
/**
*Createtheframe.
*/
publicLuckySelect(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,450,251);
contentPane=newJPanel();
contentPane.setBorder(newEmptyBorder(5,5,5,5));
contentPane.setLayout(null);
setContentPane(contentPane);
JLabellblA=newJLabel("A");
lblA.setBounds(10,128,54,15);
contentPane.add(lblA);
JLabellblB=newJLabel("B");
lblB.setBounds(124,128,54,15);
contentPane.add(lblB);
JLabellblC=newJLabel("C");
lblC.setBounds(254,128,54,15);
contentPane.add(lblC);
textFieldA=newJTextField();
textFieldA.setBounds(30,125,66,21);
contentPane.add(textFieldA);
textFieldA.setColumns(10);
textFieldB=newJTextField();
textFieldB.setColumns(10);
textFieldB.setBounds(149,125,66,21);
contentPane.add(textFieldB);
textFieldC=newJTextField();
textFieldC.setColumns(10);
textFieldC.setBounds(264,125,66,21);
contentPane.add(textFieldC);
textField=newTextField();
textField.setBounds(98,167,157,21);
contentPane.add(textField);
textField.setColumns(10);
textFieldResult=newJTextField();
textFieldResult.setBounds(280,167,66,21);
contentPane.add(textFieldResult);
textFieldResult.setColumns(10);
textFieldA.setText("10");
textFieldB.setText("10");
textFieldC.setText("10");
JButtonbutton=newJButton("u62BDu5956");
button.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
select();
}
});
button.setBounds(0,166,93,23);
contentPane.add(button);
textArea=newJTextArea();
textArea.setBounds(30,31,306,83);
contentPane.add(textArea);
}
protectedvoidselect(){
//TODOAuto-generatedmethodstub
intaNum=Integer.decode(textFieldA.getText());
intbNum=Integer.decode(textFieldB.getText());
intcNum=Integer.decode(textFieldB.getText());
Randomr=newRandom();
intrandom=r.nextInt(aNum+bNum+cNum);
if(random<=aNum){
textFieldA.setText(Integer.toString(Integer.decode(textFieldA.getText())-1));
textArea.append(Integer.toString(random)+"抽中了A ");
}elseif(random<=aNum+bNum){
textFieldB.setText(Integer.toString(Integer.decode(textFieldB.getText())-1));
textArea.append(Integer.toString(random)+"抽中了B ");
}elseif(random<=aNum+bNum+cNum){
textFieldC.setText(Integer.toString(Integer.decode(textFieldC.getText())-1));
textArea.append(Integer.toString(random)+"抽中了C ");
}
}
}
Ⅲ Java代碼實現抽獎:從班級的學號中抽出一個一等獎,兩個二等獎,三個三等獎
抽取問題, 重點是 同一個學號不能重復被抽取.
解決辦法很多,
比如數組可以使用下標來標記,號碼是否被使用,使用了就繼續下一次抽取
也可以使用集合來抽取,把集合順序打亂,然後隨便抽幾個就可以了
參考代碼:數組法
importjava.util.Random;
publicclassTest{
publicstaticvoidmain(String[]args){
intstuNums=30;
int[]nums=newint[stuNums];//存儲學號的數組
boolean[]flags=newboolean[stuNums];//標記,用於標記對應下標的學號是否已經被抽取過了
for(inti=0;i<stuNums;i++){
nums[i]=i+1;//給學號賦值
}
Randomr=newRandom();
while(true){
intindex=r.nextInt(stuNums);
if(!flags[index]){
System.out.println("A等:"+nums[index]);
flags[index]=true;//標記已經被使用過了
break;
}
}
for(inti=0;i<2;i++){
intindex=r.nextInt(stuNums);
if(!flags[index]){
System.out.println("B等:"+nums[index]);
flags[index]=true;
}else{
i--;//如果已經被抽取過了,那麼i建議,再次循環
}
}
for(inti=0;i<3;i++){
intindex=r.nextInt(stuNums);
if(!flags[index]){
System.out.println("c等:"+nums[index]);
flags[index]=true;
}else{
i--;
}
}
}
}
集合法
importjava.util.ArrayList;
importjava.util.Collections;
publicclassTest2{
publicstaticvoidmain(String[]args){
intstuNums=20;
ArrayList<Integer>list=newArrayList<Integer>();
for(inti=0;i<stuNums;i++){
list.add(i+1);
}
System.out.println("有序"+list);
Collections.shuffle(list);//打亂順序
System.out.println("亂序"+list);
System.out.println("A等"+list.get(0));
System.out.println("B等"+list.get(1));
System.out.println("B等"+list.get(2));
System.out.println("C等"+list.get(3));
System.out.println("C等"+list.get(4));
System.out.println("C等"+list.get(5));
}
}
Ⅳ 抽獎Java程序(是作業,急需
本來老早都給你弄好了,可你也不操心,一直沒有給你發;現在就這樣,需要改的話,說一下
/**
* 根據倒敘的字元串,獲取與最後一位相同的位數
* @param string -倒敘後的字元串
* @return -後幾位相同
*/
public static int getString( String string){
String string1 = string+"-";
//正則
String[] arr1 = string1.split(string1.toCharArray()[0]+"");
String string2 = string1.substring(0,arr1.length-1)+"-";
String[] arr2 = string2.split(string2.toCharArray()[0]+"");
return arr1.length==arr2.length?arr1.length-1:
getString(string.substring(0,arr1.length-1))
;
}
/**
* 後幾位相同
* @param num
* @return
*/
public static int get(Integer num,Integer o){
String string = (num+o)+"";
StringBuffer buffer = new StringBuffer(string);
string = buffer.reverse().toString();//字元串倒敘
int count = getString(string);
return count==3&&o==0?3:
count==4&&o==0?2:
count==6&&o==0?1:
count==3&&o==1?31:
count==4&&o==1?21:
count==6&&o==1?11:
count==3&&o==-1?32:
count==4&&o==-1?22:
count==6&&o==-1?12: -1;
}
public static void main(String[] args) {
Map<String,String> map = new TreeMap<>();
Set<Integer> set = new HashSet<>();
set.add(402223);
set.add(402221);
set.add(401223);
set.add(401221);
set.add(222223);
set.add(222221);
int b = 0,n=30;
while (true){
int random = (int) (Math.random()*(1000000-100000) + 100000);
set.add(random);
if (set.size() == n){
break;
}
}
for (Integer key:set){
int count = get(key,0);
//最後一個數字是0或9的話就只有一個
count = count < 0&&key%10!=9?get(key,1):count;
count = count < 0&&key%10!=1?get(key,-1):count;
String str = count>0?(
count/10==0?(
count==3?"third":count==2?"second":"first"
)
:(
"adjacent"
)
):
"blank";
//"歡迎再來";
map.put("買到的號碼:"+key, str);
}
System.out.println(map);
}
Ⅳ 如何用java技術實現幸運抽獎活動系統
import java.util.Scanner;
public class LuckyNumber {
/**
* 幸運抽獎
*/
public static
void main(String[] args) {
String answer
= "y"; // 標識是否繼續
String
userName = ""; // 用戶名
String
password = ""; // 密碼
int cardNumber
= 0; // 卡號
boolean
isRegister = false; // 標識是否注冊
boolean
isLogin = false; // 標識是否登錄
int max =
9999;
int min =
1000;
Scanner input
= new Scanner(System.in);
do {
System.out.println("*****歡迎進入獎客富翁系統*****");
System.out.println("\t1.注冊");
System.out.println("\t2.登錄");
System.out.println("\t3.抽獎");
System.out.println("***************************");
System.out.print("請選擇菜單:");
int choice =
input.nextInt();
switch
(choice) {
case 1:
System.out.println("[獎客富翁系統
> 注冊]");
System.out.println("請填寫個人注冊信息:");
System.out.print("用戶名:");
userName =
input.next();
System.out.print("密碼:");
password =
input.next();
//
獲取4位隨機數作為卡號
cardNumber =
(int)(Math.random()*(max-min))+min;
System.out.println("\n注冊成功,請記好您的會員卡號");
System.out.println("用戶名\t密碼\t會員卡號");
System.out.println(userName
+ "\t" + password + "\t" + cardNumber);
isRegister =
true; // 注冊成功,標志位設置為true
break;
case 2:
System.out.println("[獎客富翁系統
> 登錄]");
if
(isRegister) { // 判斷是否注冊
//
3次輸入機會
for (int i
= 1; i <= 3; i++) {
System.out.print("請輸入用戶名:");
String
inputName = input.next();
System.out.print("請輸入密碼:");
String
inputPassword = input.next();
if
(userName.equals(inputName) && password.equals(inputPassword)) {
System.out.println("\n歡迎您:"
+ userName);
isLogin =
true; // 登錄成功,標志位設置為true
break;
} else if
(i < 3) {
System.out.println("用戶名或密碼錯誤,還有"
+ (3 - i) + "次機會!");
} else
{
System.out.println("您3次均輸入錯誤!");
}
}
} else
{
System.out.println("請先注冊,再登錄!");
}
break;
case 3:
System.out.println("[獎客富翁系統
> 抽獎]");
if
(!isLogin) { // 判斷是否登錄
System.out.println("請先登錄,再抽獎!");
} else
{
//生成5個4位隨機數字,並保存在數組中
int[]
luckynums = new int[5];
for(int i
= 0; i < luckynums.length; i++){
luckynums[i] =
(int)(Math.random()*(max-min))+min;
}
System.out.print("請輸入您的卡號:");
int
yourcard = input.nextInt();
int
i;
System.out.print("\n本日的幸運數字為:");
for (i = 0;
i < luckynums.length; i++) {
System.out.print(luckynums[i]
+ " ");\
}
for (i = 0;
i < luckynums.length; i++) {
if
(luckynums[i] == yourcard) {
System.out.println("\n恭喜!您是本日的幸運會員!");
break;
}
}
if (i ==
luckynums.length) {
System.out.println("\n抱歉!您不是本日的幸運會員!");
}
}
break;
default:
System.out.println("[您的輸入有誤!]");
break;
}
System.out.print("繼續嗎?(y/n):");
answer =
input.next();
System.out.println("");
} while
("y".equals(answer));
if
("n".equals(answer)) {
System.out.println("系統退出,謝謝使用!");
}
}
}
Ⅵ 用Java編寫一個抽獎游戲要求: 1.用戶單擊「開始」按鈕進行滾動抽獎,單擊「停止」按鈕即可產生1
使用 ArrayList<Integer> 放那些待抽的數,,,,抽一個、delete一個。。。。。。
Ⅶ JAVA抽獎的演算法
那你可以再1-10000之間隨即嘛,概率小的獎品設置為1-10,概率大的設置為11-1000,最後隨即出來的數判斷一下在那個區間就可以了.
實體類,就是寫一個JAVA BEAN嘛,裡面記載獎品名字和數量啊,不懂可以追問
Ⅷ 用java完成一個抽獎的程序。 每次運行程序,都會從以下的抽獎結果中隨機顯示一個出來:
生成100個對象,對象有個屬性,其中10個是大獎,40個是小獎,50個是無獎。
放到一個List里。
每次抽中的步驟
1、隨機生成0-List長度之間的數值 ,去取List中的相應對象,並移除這個對象。
代碼如下。:
獎品對象類:
public class PrizeBean {
private String type;
public String getType() {
return eggType;
}
public void setType(String eggType) {
this.eggType = eggType;
}
}
獎品池初始化代碼段:
{
List prizebeanList = new ArrayList();
for (int i = 0; i < 10; i++) {
PrizeBean prizeBean = new PrizeBean();
prizeBean.setType(「大獎「);
prizebeanList.add(prizeBean);
}
for (int i = 0; i < 40; i++) {
PrizeBean prizeBean = new PrizeBean();
prizeBean.setType(「小獎「);
prizebeanList.add(prizeBean);
}
for (int i = 0; i < 50; i++) {
PrizeBean prizeBean = new PrizeBean();
prizeBean.setType(「無獎「);
prizebeanList.add(prizeBean);
}
}
抽獎代碼段:
/**
*獎品池已經空的,肯定返回無獎了。。。
**/
if(prizebeanList.size()==0){
- 沒有中獎哦,下次加油!
return;
}
/**
* 隨機生成,獎品池中獎品數量的數字。。取出獎品池中的數字。。移除記錄。返回。。
*/
int resultnum = (int) (Math.random() * prizebeanList.size());
PrizeBean resultPrizeBean = prizebeanList.get(resultnum);
prizebeanList.remove(resultPrizeBean);
if(resultPrizeBean.getType() .eqauls("大獎"){
- 恭喜,大獎!
}else if(resultPrizeBean.getType() .eqauls("小獎"){
- 運氣不錯哦,小獎!
}else{
- 沒有中獎哦,下次加油!
}.
Ⅸ 通過java 實現 模擬抽獎
import java.util.Scanner;
public class Choujiang {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//定義Scanner類1234
System.out.println("請輸入四位卡號:");//輸入提示語
int cardNo = sc.nextInt();//接受輸入數據
int gewei = cardNo%10;//分解個位
int shiwei = cardNo/10%10;//分解十位
int wei = cardNo/100%10;//分解百位
int qianwei = cardNo/1000;//分解千位
int sum = gewei+shiwei+wei+qianwei;
System.out.println("會員卡號四位之和是:"+sum);
if(sum>20){//判斷各位數和是否大於20
System.out.println("恭喜,你是幸運客戶!");
}else{
System.out.println("謝謝惠顧!");
}
}
}
Ⅹ 商場推出幸運抽獎活動的java初級代碼編寫
public class Lucky {
public static void main(String[] args){
System.out.println("請輸入您的4位會員卡號:");
Scanner sc = new Scanner(System.in);
int number = sc.nextInt(); //接收用戶從控制台輸入的會員卡號,並保存在會員卡號變數中
int a = number/1000; //千位
int b = number%1000/100; //百位
int c = number%100/10; //十位
int d = number%10; //個位
if((a+b+c+d)>20){
System.out.println("恭喜中獎!您是幸運客戶");
}else{
System.out.println("謝謝參與!");
}
}
}
最基礎的 沒有異常判斷 無限循環輸入什麼東西