父类:用户类
// 用户类
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 int getMoney() {
return money;
}
public void setName(String name) {
this.name = name;
}
public void setMoney(int money) {
this.money = money;
}
}
子类:群主类
import java.util.ArrayList;
// 群主类
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> redEnvelope = new ArrayList<>();
// 安全检查:群主剩下的钱够不够发红包?
int leftMoney = super.getMoney();
if (totalMoney > leftMoney) {
System.out.println("余额不足");
return redEnvelope; // 此时返回了空集合
}
// 余额够的情况下,扣钱即重设群主剩下的钱
super.setMoney(leftMoney - totalMoney);
// 拆分红包
int avg = totalMoney / count;
int mod = totalMoney % count;
//零头都放在最后一个红包里
for (int i = 0; i < count - 1; i++) {
redEnvelope.add(avg);
}
int last = avg + mod;
redEnvelope.add(last);
return redEnvelope;
}
}
子类:群成员类
import java.util.ArrayList;
import java.util.Random;
// 群成员类
public class Menber extends User {
public Menber() {
}
public Menber(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);
}
}
程序入口
import java.util.ArrayList;
public class Demo {
public static void main(String[] args) {
Manager manager=new Manager("群主",500);
Menber member1=new Menber("成员1",0);
Menber member2=new Menber("成员2",0);
Menber member3=new Menber("成员3",0);
manager.show();
member1.show();
member2.show();
member3.show();
System.out.println("=======================");
ArrayList<Integer> redList1=manager.send(10,3);
member1.receive(redList1);
member2.receive(redList1);
member3.receive(redList1);
manager.show();
member1.show();
member2.show();
member3.show();
System.out.println("=======================");
ArrayList<Integer> redList2=manager.send(1000000,3);
}
}
输出结果
群主当前的余额:500
成员1当前的余额:0
成员2当前的余额:0
成员3当前的余额:0
=======================
群主当前的余额:490
成员1当前的余额:4
成员2当前的余额:3
成员3当前的余额:3
=======================
余额不足