发红包1.0版

定义用户类,群主和成员的父类。抽取其共性内容

package day09.demo06;

public class User {
    // 姓名
    private String name;
    // 钱的余额
    private int money;

  
    public void show() {
        System.out.println("我的名字是" + this.name +"   "+   "我的钱总数是" + this.money + "\t");
    }

    // 无参构造
    public User() {
    }
    // 全参数构造

    public User( String name,int money) {
        this.money = money;
        this.name = name;
    }

    // 获取余额的方法
    public int getMoney() {
        return money;
    }

    //  设置余额的方法
    public void setMoney(int money) {
        this.money = money;
    }

    // 获取名字的方法
    public String getName() {
        return name;
    }

    //  设置名字的方法
    public void setName(String name) {
        this.name = name;
    }
}

定义群主类

package day09.demo06;

import java.util.ArrayList;

public class Admin extends User {
    // 空参构造
    public Admin() {
        // 调用父类中的空参构造
        super();
    }

    // 全参数构造
    public Admin( String name,int money) {
        // 调用父类中的有参数构造
        super( name,money);
    }

    // 群主发红包方法
    public ArrayList<Integer> send(int totalMoney, int count) {
        // 定义一个集合,存储若干个红包的余额
        ArrayList<Integer> redList = new ArrayList<>();
        // 判断自己的钱包的钱,是否大于要发的钱
        if (super.getMoney() < totalMoney) {
            System.out.println("余额不足");
            return redList; //
        }
        // 发了多少钱,就要扣除多少钱。重新设置群主的金额
        super.setMoney(super.getMoney() - totalMoney);
        //把要发的钱,平分成要发的份数
        int avg = totalMoney / count;
        // 余数,添加到最后一个红包
        int mod = totalMoney % count;
        for (int i = 0; i < count - 1; i++) {
            redList.add(avg);

        }
        // 最后一个红包
        redList.add(avg + mod);
        //返回包装好的红包
        return redList;
    }


}

定义用户类

package day09.demo06;

import java.util.ArrayList;
import java.util.Random;

public class Member extends User {
    // 空参构造
    public Member() {
        // 调用父类中的空参构造
        super();
    }

    // 全参数构造
    public Member( String name,int money) {
        // 调用父类中的有参数构造
        super( name,money);
    }

    // 定义接收红包的方法
    public void receive(ArrayList<Integer> list) {
        // 从包装好的红包中随机抽取一个
        int index = new Random().nextInt(list.size());
        int delta = list.remove(index);
        // 难道的红包的钱,加上用来的钱,重新设置金额
        super.setMoney(super.getMoney() + delta);

    }
}

定义测试类

package day09.demo06;

public class Test {
    public static void main(String[] args) {
        // 创建群主对象
        Admin ad = new Admin("群主", 188);
        // 创建成员对象
        Member one = new Member("成员甲", 0);
        Member two = new Member("成员乙", 0);
        Member three = new Member("成员丙", 0);
        // 查看群主余额
        ad.show();
        // 查看成员余额
        one.show();
        two.show();
        three.show();
        System.out.println("----------------------------------");
        //群主发20红包,发3个人
        ad.send(20, 3);
        //成员收红包
        one.receive(ad.send(20, 3));
        two.receive(ad.send(20, 3));
        three.receive(ad.send(20, 3));

        // 查看群主余额
        ad.show();
        // 查看成员余额
        one.show();
        two.show();
        three.show();
    }
}

 程序运行结果,因为调用了Random类,所以每次不一样

我的名字是群主 我的钱总数是188
我的名字是成员甲 我的钱总数是0
我的名字是成员乙 我的钱总数是0
我的名字是成员丙 我的钱总数是0
----------------------------------
我的名字是群主 我的钱总数是108
我的名字是成员甲 我的钱总数是6
我的名字是成员乙 我的钱总数是6
我的名字是成员丙 我的钱总数是6

猜你喜欢

转载自www.cnblogs.com/wurengen/p/10629712.html