发红包案例

题目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());
    }
}
发布了30 篇原创文章 · 获赞 29 · 访问量 2223

猜你喜欢

转载自blog.csdn.net/weixin_41938314/article/details/102609279