A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目要求:    群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则:    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();

    }
}




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马