Java使用HashMap映射实现消费抽奖功能

 更新时间:2021年09月17日 11:04:17   作者:阿炳的旅程  
这篇文章主要为大家详细介绍了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();
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring Boot支持HTTPS步骤详解

    Spring Boot支持HTTPS步骤详解

    这篇文章主要介绍了Spring Boot支持HTTPS步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java版水果管理系统源码

    Java版水果管理系统源码

    这篇文章主要为大家详细介绍了Java版水果管理系统源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • spring关于组件的注入及获取流程场景分析

    spring关于组件的注入及获取流程场景分析

    这篇文章主要介绍了spring关于组件的注入及获取流程场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-07-07
  • spring boot 注册拦截器过程详解

    spring boot 注册拦截器过程详解

    这篇文章主要介绍了spring boot中注册拦截器过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java String源码contains题解重复叠加字符串匹配

    Java String源码contains题解重复叠加字符串匹配

    这篇文章主要为大家介绍了Java String源码contains题解重复叠加字符串匹配示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 老生常谈设计模式之动态代理

    老生常谈设计模式之动态代理

    下面小编就为大家带来一篇老生常谈设计模式之动态代理。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 2020Mac M1安装jdk和IDEA的详细方法

    2020Mac M1安装jdk和IDEA的详细方法

    这篇文章主要介绍了2020Mac M1安装jdk和IDEA的详细方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • springboot打包如何忽略Test单元测试

    springboot打包如何忽略Test单元测试

    这篇文章主要介绍了springboot打包如何忽略Test单元测试,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • SpringMVC底层执行流程及原理解析

    SpringMVC底层执行流程及原理解析

    这篇文章主要介绍了SpringMVC底层执行流程及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Java程序包不存在的3种解决方法总结

    Java程序包不存在的3种解决方法总结

    包存在的,但是启动项目的时候提示包不存在,所以解决下,这篇文章主要给大家介绍了关于Java程序包不存在的3种解决方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-01-01

最新评论