案例分析:

 

一个发红包的案例

 实现案例:

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

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


//群主的类
class Manager extends User {

    public Manager() {
    }

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

    public ArrayList<Integer> send(int totalMonay,int count){
        //需要一个集合,用来存储若干个红包的金额
        ArrayList<Integer> redlist = new ArrayList<>();

        //首先看一下群主自己余额
        int leftMoney = super.getMoney();

        if (totalMonay > leftMoney){
            System.out.println("余额不足!");
            return redlist;//返回空集合
        }

        //扣钱:重新设置余额
        super.setMoney(leftMoney - totalMonay);

        //发红包需要平均拆分成count份
        int avg = totalMonay / count;
        int mod = totalMonay % count;

        //除不开的的零头,包在最后一个红包当中
        //下面把一个个红包放在集合当中
        for (int i = 0; i < count-1; i++) {
            redlist.add(avg);
        }

        int last = avg + mod;
        redlist.add(last);

        return redlist;
    }

}


//普通成员
class Member extends User {

    public Member() {
    }

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

    public void receive(ArrayList<Integer> list){
        //从多个红包当中随便抽取一个,给我自己
        //随机获取一个list集合当中的索引编号
        int index = new Random().nextInt(list.size());
        //根据索引从集合当中删除,并且得到被删除的红包给我自己
        int delat = list.remove(index);
        //当前成员本来有多少钱:
        int moeny = super.getMoney();
        //加法,并且重新设置回去
        super.setMoney(moeny + delat);
    }

}

public class MainRedPacket {

    public static void main(String[] args) {
        Manager manager = new Manager("群主",100);
        Member memberA = new Member("成员A",0);
        Member memberB = new Member("成员B",0);
        Member memberC = new Member("成员C",0);

        manager.show();
        memberA.show();
        memberB.show();
        memberC.show();
        System.out.println("===============");

        //群主发50块红包,分三个
        ArrayList<Integer> redlist = manager.send(50,3);
        //三个成员收红包
        memberA.receive(redlist);
        memberB.receive(redlist);
        memberC.receive(redlist);

        manager.show();//100-50=50
        //16,16,18
        memberA.show();
        memberB.show();
        memberC.show();
    }

}

运行结果:

一个发红包的案例

相关文章:

  • 2021-09-05
  • 2021-05-28
  • 2022-12-23
  • 2021-12-14
  • 2021-09-22
  • 2022-12-23
  • 2021-12-06
猜你喜欢
  • 2022-12-23
  • 2021-10-13
  • 2022-01-18
  • 2021-05-06
  • 2022-12-23
  • 2021-09-25
  • 2021-11-22
相关资源
相似解决方案