java练习--群主发红包

无论群主和群成员都有属性name,money,放在父类User里

package com.qml.study;

public class User {
    private String name ;
    private  int money;

    public User() {
    }

    public User(String name, int money) {
        this.name = name;
        this.money = 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 void show(){
        System.out.println("我是"+name+"我有"+money+"元钱");
    }

}

群主类,有发红包的方法

package com.qml.study;

import java.util.ArrayList;

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> list = new ArrayList<Integer>();

             int leftmoney = super.getMoney();
             if (leftmoney < totalMoney){
                 System.out.println("余额不足");
                 return  list;//返回空
             }
        //扣钱,重新设置金额
        super.setMoney(leftmoney-totalMoney);

        int i1 = totalMoney / count;  //平均分的金额
        int i2 = totalMoney % count;   //剩余不能整除的金额放在最后一个红包里

        //比如10元分4个红包,前三个每个2元,第四个4元
        for (int i = 0; i < count-1; i++) {
            list.add(i1);
        }

        int last = i2+i1;
        list.add(last);

        return list;
    }

}

群成员类,有收红包的方法

package com.qml.study;

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

public class Member extends  User{
    public Member(String name, int money) {
        super(name, money);
    }

    public Member(){}

    public void receive(ArrayList<Integer> list){
        //从钱包中随机取1个
        int index = new Random().nextInt(list.size());
       //根据索引,从集合中删除金额,给自己加入
        int delta = list.remove(index);
        int money = super.getMoney(); //自己原来的钱
        //重新设置金额
        super.setMoney(money+delta);
    }
}

启动类

package com.qml.study;

import java.util.ArrayList;

public class RunMoney {
    public static void main(String[] args) {

        Manager manager = new Manager("群主",100);

        Member member1 = new Member("成员1",0);
        Member member2 = new Member("成员2",0);

        manager.show();
        member1.show();
        member2.show();

        //群主发20元,发3个
        ArrayList<Integer> list = manager.send(20,3);

        member1.receive(list);
        member2.receive(list);

        manager.show();
        member1.show();
        member2.show();

    }
}

随机打印一次:
我是群主我有100元钱
我是成员1我有0元钱
我是成员2我有0元钱

我是群主我有80元钱
我是成员1我有6元钱
我是成员2我有8元钱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值