java 群主发红包系统--继承多态的运用应用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分为4个模块,test主函数,User为抽象类,QunZhu为群主类,有发红包的方法;Member为成员类,有拿红包的方法。

public class Test {
    public static void main(String[] args){
        QunZhu qz= new QunZhu("群主",600);
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入金额");
        int money = sc.nextInt();
        System.out.println("请输入个数");
        int count = sc.nextInt();

        ArrayList<Double> sendList = qz.send(money, count);

        if(sendList == null){
            System.out.println("余额不足发钱。。。");
            return;
        }

        Member m = new Member();
        Member m2 = new Member();
        Member m3 = new Member();
        Member m4 = new Member();

        m.openHongbao(sendList);
        m2.openHongbao(sendList);
        m3.openHongbao(sendList);
        m4.openHongbao(sendList);

        qz.show();
        m.show();
        m2.show();
        m3.show();
        m4.show();
    }
}
public class QunZhu extends User{
    public QunZhu(){}
    public QunZhu(String username,double leftMoney){
        super(username,leftMoney);
    }
    public ArrayList<Double> send(int money,int count){
        double leftmoney = getLeftMoney();
        if(money > leftmoney)
            return null;

        setLeftMoney(leftmoney - money);
        money *= 100;
        int mount = money / count;
        int r = money % count;

        int rest = money % mount;

        ArrayList<Double> list = new ArrayList<>();

        for (int i = 0; i < count - 1; i++) {
            list.add(mount/100.0);
        }

        if(r == 0)
            list.add(mount/100.0);
        else{
            list.add(mount / 100.0 + rest);
        }
        System.out.println("红包内部情况"+list);

        return list;
    }
}
public class Member extends User{
    public Member(){}
    public Member(String username,double leftMoney){
        super(username,leftMoney);
    }
    public void openHongbao(ArrayList<Double> list){
        int index = new Random().nextInt(list.size());

//        double money = super.getLeftMoney();
//        setLeftMoney(money + list.get(index));
//        list.remove(index);
        double money = list.remove(index);
        double rest = super.getLeftMoney();
        super.setLeftMoney(money+rest);
    }

}

public class User {
    private String username;
    private double leftMoney;
    public User(){}
    public User(String username,double leftMoney){
        this.username = username;
        this.leftMoney = leftMoney;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public double getLeftMoney() {
        return leftMoney;
    }

    public void setLeftMoney(double leftMoney) {
        this.leftMoney = leftMoney;
    }
    public void show(){
        System.out.println("用户名"+username+",余额为:"+leftMoney+"元");

    }
}

样例
请输入金额
523
请输入个数
6
红包内部情况[87.16, 87.16, 87.16, 87.16, 87.16, 87.16]
用户名群主,余额为:77.0元
用户名null,余额为:87.16元
用户名null,余额为:87.16元
用户名null,余额为:87.16元
用户名null,余额为:87.16元

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值