169/170发红包案例和案例实现
发红包案例的分析
发红包案例的实现
用户类
public class User {
private String name;
private int money;
public void show(){
System.out.println("我叫:"+name+",我有:"+money);
}
public User(String name, int money) {
this.name = name;
this.money = money;
}
public User() {
}
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;
}
}
群主类
public class Manager extends User{
public Manager(){
}
public Manager(String name, int money) {
super(name, money);
}
public ArrayList<Integer> send(int totalMoney,int count){
//首先需要一个集合,用来存储若干个红包的金额
ArrayList<Integer> redList = new ArrayList<Integer>();
//首先看一下群主直接有多少钱
int leftMoney = super.getMoney();//群主当前余额
if (totalMoney > leftMoney){
System.out.println("余额不足");
return redList;//返回空集合
}
//扣钱,其实就是重新设置余额
super.setMoney(leftMoney - totalMoney);
//发红包需要平均拆成count份
int avg = totalMoney / count;
int mod = totalMoney * count;//余额,也就是剩下的零头
//除不开的零头,抱在最后一个红包当中
//下面把红包一个一个放到集合当中
for (int i = 0; i <count -1; i++){
redList.add(avg);
}
//最后一个红包
int last = avg+mod;
redList.add(last);
return redList;
}
}
普通成员
public class Member extends User{
public Member(){
}
public Member(String name, int money) {
super(name, money);
}
public void receive(ArrayList<Integer> list){
//从多个红包当中随便抽取一个,给我自己
//随机获取一个集合当中的索引编号
int index = new Random().nextInt(list.size());
//根据索引,从集合当中删除,并且得到被删除的红包,给我自己
int delta = list.remove(index);
//当前成员自己本来有多少钱
int money = super.getMoney();
//加法,并且重新设置回去
super.setMoney(money+delta);
}
}