java抽奖第几名代码 java抽奖程序代码

java抽奖程序我给java抽奖第几名代码你个比较简单的java抽奖第几名代码 , , 但是需要按照你的要求进行稍微的修改 。。然后在main方法中去执行就可以java抽奖第几名代码了:
public class GoodLuck {
int custNo;
int i=1;
String answer;
String awardName;
public void LuckNo(){
Scanner input=new Scanner(System.in);
System.out.println("\n我行我素购物管理系统幸运抽奖\n");
do{
// 需要的话请把随机数调整成你想要的范围(我这个是为了测试方便写的1
(~3的随机数,根据你的需要把下面的3换成你想要的数字就行了)
int num=(int)(Math.random()*3 1);
System.out.print("请输入会员卡号(4位整数):");
custNo=input.nextInt();
//百位数与随机数相同的为幸运者
int bai=custNo/100;
while(i==1){
if(custNo=1000custNo=9999){
break;
}
else{
System.out.println("\n会员号码输入有误,请重新输入:");
custNo=input.nextInt();
continue;
}
}
if(bai==num){
showAward();
System.out.print("\n卡号:" custNo "是幸运客户,获得" awardName);
}else{
System.out.print("\n卡号:" custNo "\t谢谢您的支持!");
}
System.out.println("\n是否继续(y/n)");
answer=input.next();
while(i==1){
if(answer.equals("y")||answer.equals("n")){
break;
}else{
System.out.print("输入有误!请重新输入:");
answer=input.next();
continue;
}
}
}while(!answer.equals("n"));
}
public void showAward(){
int num=(int)(Math.random()*3 1);
if(num==1){
awardName="Mp3";
}
else if(num==2){
awardName="美的微波炉";
}
else{
awardName="美的电饭锅";
}
}
Java代码实现抽奖:从班级的学号中抽出一个一等奖,两个二等奖,三个三等奖抽取问题, 重点是 同一个学号不能重复被抽取.
解决办法很多,
比如数组可以使用下标来标记,号码是否被使用,使用了就继续下一次抽取
也可以使用集合来抽取,把集合顺序打乱,然后随便抽几个就可以了
参考代码:数组法
import java.util.Random;
public class Test {
public static void main(String[] args) {
int stuNums=30;
int[] nums=new int[stuNums];//存储学号的数组
boolean[] flags=new boolean[stuNums];//标记,用于标记对应下标的学号是否已经被抽取过了
for (int i = 0; istuNums; i) {
【java抽奖第几名代码 java抽奖程序代码】nums[i]=i 1;//给学号赋值
}
Random r=new Random();
while(true){
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("A等:" nums[index]);
flags[index]=true; //标记已经被使用过了
break;
}
}
for (int i = 0; i2; i) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("B等:" nums[index]);
flags[index]=true;
}else{
i--;//如果已经被抽取过了 ,那么i建议,再次循环
}
}
for (int i = 0; i3; i) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("c等:" nums[index]);
flags[index]=true;
}else{
i--;
}
}
}
}
集合法
import java.util.ArrayList;
import java.util.Collections;
public class Test2 {
public static void main(String[] args) {
int stuNums=20;
ArrayListInteger list=new ArrayListInteger();
for (int i = 0; istuNums; 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抽奖的算法优先级规则使高等奖尽量在后期抽出
import java.util.LinkedList;
import java.util.List;
public class GetGift {
// 奖品仓库
private ListGift gifts = new LinkedListGift();
public GetGift() {
// 生成一堆奖品放进奖品仓库
// 一等奖一个优先级1,二等奖两个优先级2 。。。20等奖20个优先级20
for (int i = 1; i = 20; i) {
GiftType gt = new GiftType(i"等奖", i, i);
for (int j = 1; j = i; j) {
gifts.add(new Gift(i"等奖——第"j"号", gt));
}
}
}
// 抽奖
public synchronized Gift getGift() {
int randomNumber = (int) (Math.random() * total());
int priority = 0;
for (Gift g : gifts) {
priority= g.getType().getPriority();
if (priority = randomNumber) {
// 从奖品库移出奖品
gifts.remove(g);
return g;
}
}
// 抽奖次数多于奖品时,没有奖品
return null;
}
/**
* @param args
*/
public static void main(String[] args) {
GetGift gg = new GetGift();
// 一共生成210个奖品,抽210次,多抽显示null
for (int i = 0; i210; i) {
System.out.println(gg.getGift());
}
}
// 计算总优先级,内部使用
private int total() {
int result = 0;
for (Gift g : gifts) {
result= g.getType().getPriority();
}
return result;
}
}
// 记录奖品的信息
// 如1等奖共1个,优先级为1最难抽
class GiftType {
// 名字(如1等奖)
private String name;
// 这种奖品的数量,数量越大越容易抽到
private int quantity;
// 这种奖品的优先级,最小为1,数越大越容易抽到
private int priority;
public GiftType(String name, int quantity, int priority) {
this.name = name;
this.quantity = quantity;
this.priority = priority;
}
public int getPriority() {
return priority;
}
@Override
public String toString() {
return "GiftType [name="name", quantity="quantity", priority="priority"]";
}
}
// 奖品
class Gift {
// 每个奖品有唯一id,抽奖不会重复,格式为"16等奖——第8号"
private String id;
// 这个奖品的类别
private GiftType type;
public Gift(String id, GiftType type) {
this.id = id;
this.type = type;
}
public GiftType getType() {
return type;
}
@Override
public String toString() {
return "Gift [id="id", type="type"]";
}
}
关于java抽奖第几名代码和java抽奖程序代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读