题目要求: 群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则: 1. 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。
2. 成员领取红包后,保存到成员余额中。
请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。
一,创建一个用户类作为父类
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 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<>();
//获得群主余额
int leftMoney = super.getMoney();
//判断群主所发红包是否在余额范围内
if (leftMoney < totalMoney) {
System.out.println("余额不足!");
return redList;//余额不足,返回空集合
}
//余额足够,包红包,
int avg = totalMoney / count;//将totalMoney平均分成count份,每份为avg元
int mod = totalMoney % count;//平均分后余下的钱
for (int i = 0; i < count - 1; i++) {//将count-1个红包分别放入avg元钱
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 recive(ArrayList<Integer> redList) {
Random r = new Random();
int index = r.nextInt(redList.size());//随机获取一个集合的索引位置
int delta = redList.remove(index);//移出并得到该索引位置的红包
int money = super.getMoney();//获取用户当前余额
super.setMoney(delta + money);//将红包存入余额
}
}
四,创建一个测试类
public class MainPacket {
public static void main(String[] args) {
Manager manager = new Manager("群主", 300);
Member member1 = new Member("成员1", 0);
Member member2 = new Member("成员2", 0);
Member member3 = new Member("成员3", 0);
manager.show();
member1.show();
member2.show();
member3.show();
System.out.println("==================");
ArrayList<Integer> redList = manager.send(100, 3);
member1.recive(redList);
member2.recive(redList);
member3.recive(redList);
manager.show();
member1.show();
member2.show();
member3.show();
}
}
|
|