Java使用HashMap映射实现消费抽奖功能
本文实例为大家分享了Java实现消费抽奖功能的具体代码,供大家参考,具体内容如下
要求如下:
1、定义奖项类Awards,包含成员变量String类型的name(奖项名称)和int类型的count(奖项数量)。
2、定义抽奖类DrawReward,包含成员变量Map<Integer, Awards> 类型的rwdPool(奖池对象)。该类实现功能如下:a) 构造方法中对奖池对象初始化,本实验要求提供不少于4类奖品,每类奖品数量为有限个,每类奖品对应唯一的键值索引(抽奖号)。b) 实现抽奖方法draward,由抽奖号在奖池中抽奖,并根据当前奖池的情况作出对应的逻辑处理;c) 利用迭代器Iterator实现显示奖池奖项情况的方法showPool。
3、编写测试类,实现下图效果:
实现代码:
import java.util.Random;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
class Awards {
private String name;
private int count;
public Awards() {
}
public Awards(String name, int count) {
this.name = name;
this.count = count;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
class DrawReward {
private Map<Integer,Awards> rwdPool=null;
public DrawReward(){
this.rwdPool=new HashMap<Integer,Awards>();
rwdPool.put(0,new Awards("阳光普照奖:家庭大礼包",100));
rwdPool.put(1,new Awards("一等奖:华为Mate X",4));
rwdPool.put(2,new Awards("二等奖:格力吸尘器",6));
rwdPool.put(3,new Awards("特等奖:¥5000",1));
}
public boolean hasAward(int rdkey){
Awards awards = this.rwdPool.get(rdkey);
if(awards.getCount()==0) return false;
else return true;
}
public void draward(int rdKey) {
Awards aw = this.rwdPool.get(rdKey);
System.out.println("抽奖结果:"+aw.getName());
aw.setCount(aw.getCount()-1);
}
public void showPool(){
Iterator<Awards> it;
it = rwdPool.values().iterator();
while(it.hasNext()){
Awards aw = it.next();
System.out.println(aw.getName()+";剩余奖项数量:"+aw.getCount());
}
}
}
public class MainClass {
public static void main(String[] args) {
DrawReward draw = new DrawReward();
for(int i=0;i<10;i++){
Random rd = new Random();
int rdKey = rd.nextInt(4);
if(draw.hasAward(rdKey)) {
draw.draward(rdKey);
} else {
i--;
}
}
draw.showPool();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
以上是 Java使用HashMap映射实现消费抽奖功能 的全部内容, 来源链接: utcz.com/p/249109.html