发红包案例

题目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());
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值