其他分享
首页 > 其他分享> > 抢红包案例

抢红包案例

作者:互联网

综合案例:群主发普通红包

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

用户类:姓名,余额
群主类:发送红包的方法 extends 用户类
普通成员另类:收红包的方法 extends 用户类

发红包的逻辑,三要素:
返回值类型:ArrayList
方法名称: send
参数列表: 1.总共发红包金额 int totalMonry 2.分成多少分 int count
public ArrayList send(int totalMonry,int count){}

收红包的逻辑,三要素
返回值类型:void
方法名称:receive
参数列表:ArrayList

public void receive(ArrayList list){}

package com.yang.exercises;

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

public class Test {
    public static void main(String[] args) {
        Manage manage = new Manage("群主",200);

        Member member = new Member("群员1",0);
        Member member2 = new Member("群员2",0);
        Member member3 = new Member("群员3",0);

        manage.show();
        member.show();
        member2.show();
        member3.show();
        System.out.println("-----------------------");


        ArrayList<Double> doubles = manage.send(99.99,3);

        member.receive(doubles);
        member2.receive(doubles);
        member3.receive(doubles);

        manage.show();
        member.show();
        member2.show();
        member3.show();
    }
}

class User{
    private String name;//姓名
    private double money;//余额 当前拥有的钱的数量

    public User() {
    }

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

    //展示当前用户的余额
    public void show(){
        System.out.println("名称:"+name +"  " + "余额:" + money );
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", money=" + money +
                '}';
    }

    public String getName() {
        return name;
    }

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

    public double getMoney() {
        return money;
    }

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

class Manage extends User{
    public Manage() {

    }

    public Manage(String name, double money) {
        super(name, money);
    }

    public ArrayList<Double> send(double totalMoney,double count){
        //编写集合来存储若干个红包的金额
        ArrayList<Double> list = new ArrayList<>();

        //首先看一下群主有多少钱
        double leftMoney = super.getMoney();
        if (leftMoney < totalMoney){
            System.out.println("余额不足");
            return list;//返回一个空集合
        }
        //扣钱 重新设置新余额
        super.setMoney(leftMoney - totalMoney);

        //发送红包平均分为count份
        double avg = leftMoney / count;
        double mod = totalMoney % count;

        for (int i = 0; i < count -1 ; i++) {
            list.add(avg);
        }

        //最后一个红包
        double last = mod + avg;
        list.add(last);
        return list;
    }
}


class Member extends User{
    public Member() {
    }

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

    public void receive(ArrayList<Double> list){
        //从多个红包当中抽取一个给我自己
        //随机获取一个集合中的索引作为编号
        int index = new Random().nextInt(list.size());
        //根据索引从集合中删除 并且得到被删除的给我自己
        Double delta = list.remove(index);

        //当前成员的原本金额
        double money = super.getMoney();

        super.setMoney(delta + money);

    }
}


标签:红包,name,double,抢红包,案例,ArrayList,money,public
来源: https://www.cnblogs.com/ailhy/p/16434415.html