题目3:群主发红包。某群有一个群主,多个群成员,群主给成员发红包。 规则:1.群主的一部分余额会扣除发红包的数目,平均分成N个等份,让成员领取 2.成员领取红包后,余额会相应的增加
分析:这里想用继承来做,群主和成员类有共同点。
最终实现:main函数:
注释部分是一开始写的,后面将其优化
public static void main(String[] args) {
Manager manager = new Manager("Manager1",200);//将下面优化
// manager.setName("Manager1");
// manager.setMoney(200);
Member member1 = new Member("member1",20);//优化后,代码简洁
Member member2 = new Member("member2",30);
Member member3 = new Member("member3",50);
Member member4 = new Member("member4",30);
Member member5 = new Member("member5",10);
// member1.setName("member1");
// member1.setMoney(20);
// Member member2 = new Member();
// member2.setName("member1");
// member2.setMoney(30);
// Member member3 = new Member();
// member3.setName("member1");
// member3.setMoney(50);
// Member member4 = new Member();
// member4.setName("member1");
// member4.setMoney(30);
// Member member5 = new Member();
// member5.setName("member1");
// member5.setMoney(10);
ArrayList<Double> Package = manager.Send(60.8,5);
member1.Receive(Package);
member2.Receive(Package);
member3.Receive(Package);
member4.Receive(Package);
member5.Receive(Package);
}
}
群主类:
public class Manager extends Person {
public Manager() {
}
public Manager(String name, double money) {
super(name, money);
}
public ArrayList Send(double Pocketmoney, int num){
double money = super.getMoney() ;//看看目前有多少钱,super向上调用父类
if(money < Pocketmoney){
System.out.println("你的余额不足");
}
super.setMoney(money - Pocketmoney);
double Ave = Pocketmoney / num;//没分钱是多少
ArrayList<Double> Packet = new ArrayList<>();
for (int i = 0; i < num; i++) {
Packet.add(Ave);
}
System.out.println("我的余额是"+super.getMoney());
return Packet;
}
}
成员类:
public class Member extends Person {
//如果这里的无参和有参不写,那主函数中,新建对象就不能直接命名和赋值
public Member() {
}
public Member(String name, double money) {
super(name, money);
}
//收红包
public void Receive(ArrayList<Double> list){
int n = list.size();
int num = new Random().nextInt(n);//将下面两行代码优化成一行
// Random r = new Random();
// int num = r.nextInt(n);
double money = super.getMoney();
super.setMoney(money +list.get(num));//余额加钱
list.remove(num);
System.out.println("我的余额是"+super.getMoney());
}
}