IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java 21.发红包案例 -> 正文阅读

[Java知识库]java 21.发红包案例

需求

群主发普通红包,群里有多名成员,群主给成员发普通红包,普通红包的规则:

  1. 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取
  2. 成员领取红包后,保存到成员余额中
    根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。

概要设计

用户类 User:

姓名
余额
展示信息

群主类 Manager:

发红包
    0. 发红包的金额要小于余额
    1. 存储红包的数组
    2. 发的红包要分成n等份
    3. 群主余额扣减
    4. 返回红包数组

普通成员类 Member:

收红包
    1. 接收一个红包数组
    2. 成员根据数组的索引领取红包
        随机获取数组中的索引,然后将索引对应的金额从数组中移除,给到自己账户
    3. 成员的余额增加

示例代码

User.java

package redEnvelope;

public class User {
    private String name;
    private int money;

    public User() {
    }

    public User(String name, int money) {
        this.name = name;
        this.money = money;
    }

    public void show(){
        System.out.println("我叫:" + name + ",余额:" + money);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }
}

Manager.java

package redEnvelope;

import java.util.ArrayList;

public class Manager extends User{

    public Manager(){
        //这里留空,编译器会默认给加一个super();
    }

    public Manager(String name, int money) {
        super(name, money);
    }

    public ArrayList<Integer> send(int money, int count) {
        int balance = super.getMoney();

        //1. 存储红包的数组
        ArrayList<Integer> redList = new ArrayList<>();

        //0. 异常检测
        if(money > balance){
            System.out.println("余额不足");
            return redList;
        }

        //2. 发的红包要分成n等份
        int avg = money / count;
        int mod = money % count;
        for (int i = 0; i < count-1; i++) {
            redList.add(avg);
        }
        int last = avg + mod;
        redList.add(last);
        System.out.println("红包数组:" + redList);

        //3. 群主余额扣减
        super.setMoney(balance - money);

        //4. 返回红包数组
        return redList;
    }
}

Member.java

package redEnvelope;

import java.util.ArrayList;
import java.util.Random;

public class Member extends User {

    public Member(){

    }

    public Member(String name, int money) {
        super(name, money);
    }

    public void receive(ArrayList<Integer> list){
        Random r = new Random();
        int index = r.nextInt(list.size());
        int delta = list.remove(index);
        int money= super.getMoney();
        super.setMoney(money + delta);
    }
}

DemoMain.java

package redEnvelope;

import java.util.ArrayList;

public class DemoMain {
    public static void main(String[] args) {
        Manager manager = new Manager("唐三藏",100);
        Member a = new Member("孙悟空", 1);
        Member b = new Member("猪八戒", 2);
        Member c = new Member("沙悟净", 3);
        Member d = new Member("孙悟空", 0);
        Member e = new Member("猪八戒", 0);
        Member f = new Member("沙悟净", 0);
        System.out.println("当前群主及成员的余额:");
        manager.show();
        a.show();
        b.show();
        c.show();
        d.show();
        e.show();
        f.show();
        ArrayList redList = manager.send(34,6);
        a.receive(redList);
        b.receive(redList);
        c.receive(redList);
        d.receive(redList);
        e.receive(redList);
        f.receive(redList);
        System.out.println("抢完红包后,群主及成员的余额:");
        manager.show();
        a.show();
        b.show();
        c.show();
        d.show();
        e.show();
        f.show();
    }

}

当前群主及成员的余额:
我叫:唐三藏,余额:100
我叫:孙悟空,余额:1
我叫:猪八戒,余额:2
我叫:沙悟净,余额:3
我叫:孙悟空,余额:0
我叫:猪八戒,余额:0
我叫:沙悟净,余额:0
红包数组:[5, 5, 5, 5, 5, 9]
抢完红包后,群主及成员的余额:
我叫:唐三藏,余额:66
我叫:孙悟空,余额:6
我叫:猪八戒,余额:7
我叫:沙悟净,余额:8
我叫:孙悟空,余额:5
我叫:猪八戒,余额:9
我叫:沙悟净,余额:5

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:19:04  更:2021-09-23 11:21:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:23:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码