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();
    }
}

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

相关文章

  • 深入了解java中常见的五种比较方法

    深入了解java中常见的五种比较方法

    在程序的世界里面,比较也是必不可少的,通过比较可以确定对象的相对顺序、相等性以及其他比较条件,下面我们就来深入了解一下java中常见的五种比较方法吧
    2023-12-12
  • java-spark中各种常用算子的写法示例

    java-spark中各种常用算子的写法示例

    这篇文章主要给大家介绍了关于java-spark中各种常用算子的写法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-06-06
  • 使用Apache POI在Java中实现Excel单元格的合并

    使用Apache POI在Java中实现Excel单元格的合并

    在日常工作中,Excel是一个不可或缺的工具,尤其是在处理大量数据时,本文将介绍如何使用 Apache POI 库在 Java 中实现 Excel 单元格的合并,需要的可以了解下
    2025-03-03
  • maven中更改jdk版本的方法实现

    maven中更改jdk版本的方法实现

    本文主要介绍了maven中更改jdk版本的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • SpringBoot报错Invalid bound statement (not found)问题排查和解决方案

    SpringBoot报错Invalid bound statement (not found)问题排查和解决方案

    这篇文章主要介绍了SpringBoot报错Invalid bound statement (not found)问题排查和解决方案,文中通过图文结合的方式讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • 解决IDEA报错Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded

    解决IDEA报错Caused by: org.springframework.boot.web.se

    遇到IDEA启动报错,可尝试以下方法:打开项目设置(Ctrl+Shift+Alt+S),将JDK版本修改为1.8;或者检查TomCat依赖,若有问题可尝试删除,此外,确保每次拉取项目后,maven地址设置为本地,并且JDK版本设置为1.8,以上为个人解决经验,希望对大家有所帮助
    2024-09-09
  • IDEA配置JRebel实现热部署的方法

    IDEA配置JRebel实现热部署的方法

    这篇文章主要介绍了IDEA配置JRebel实现热部署的方法,本文给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 每日六道java新手入门面试题,通往自由的道路--多线程

    每日六道java新手入门面试题,通往自由的道路--多线程

    这篇文章主要为大家分享了最有价值的6道多线程面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,对hashCode方法的设计、垃圾收集的堆和代进行剖析,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 详解springboot接口如何优雅的接收时间类型参数

    详解springboot接口如何优雅的接收时间类型参数

    这篇文章主要为大家详细介绍了springboot的接口如何优雅的接收时间类型参数,文中为大家整理了三种常见的方法,希望对大家有一定的帮助
    2023-09-09
  • Java 加密解密基础分类及模式归纳整理

    Java 加密解密基础分类及模式归纳整理

    这篇文章主要介绍了Java加密解密基础分类方法汇总的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论