ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

抢红包案例

2022-07-01 14:05:15  阅读:141  来源: 互联网

标签:红包 name double 抢红包 案例 ArrayList money public


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

群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则:
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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有