发红包

题目:群主发普通红包群主发普通红包

某群有多名成员,群主给成员发普通红包。普通红包的规则: .
1.群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。
2.成员领取红包后,保存到成员余额中。
请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。

在这里插入图片描述
公共类

package honbao;
	  public class User {
	    
	 private String name;//姓名
	 private int money;//余额,也就是当前用户所拥有的钱数
	 public User() {
	  super();
	 }
	 public User(String name, int money) {
	  super();
	  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;
	 }
}
                          **群主类**
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 sendMoney,int count){
     //首先需要一个集合,用来存储若干个红包的金额
     ArrayList<Integer> redList=new ArrayList<>();
     
     //首先要看一下群主自己有多少钱
     int leftMoney=super.getMoney();//群主当前余额
     if(sendMoney > leftMoney) {
      System.out.println("余额不足");
         return redList;//返回空集合
     }
     //扣钱,其实就是重新设置余额
     super.setMoney(leftMoney-sendMoney);
     
     //发红包平均拆分count份
     int avg=sendMoney/count;
     int mod=sendMoney%count;//余数,也就是除不尽时候的零头
     
     //除不开的零头放在最后一个红包中
     //下面把红包放在一个一个集合中
     for(int i=0;i<redList.size()-1;i++)
     {
      redList.add(avg);
     }
         //最后一个红包
     int last=avg+mod;
     redList.add(last);
     return redList;
    }
}
                        **普通群成员类**
import java.util.ArrayList;
import java.util.Random;
//普通群成员类
public class Member extends User {
    public Member() {
  super();
  // TODO Auto-generated constructor stub
 }
 public Member(String name, int money) {
  super(name, money);
  // TODO Auto-generated constructor stub
 }
 public void receive(ArrayList<Integer> list){
  //从多个红包当中随机抽取一个红包给我自己pt
  //随机获取一个集合当中的索引编号
  int index =new Random().nextInt(list.size());
  //根据索引,从集合中删除,并且得到被删除的红包,给我自己
  int delta = list.remove(index);
  //当前成员自己本来有多少钱;
  int money = super.getMoney();
  //加法,重新设置回去
  super.setMoney(money+delta);
 }
 
}
                          **主方法**
import java.util.ArrayList;
public class MainRedList {
     public static void main(String[] args) {
  // TODO Auto-generated method stub
  //创建一个群主,三个普通成员
        Manager manager = new Manager("群主",100);
        
        Member one = new Member("成员A",0);
        Member two = new Member("成员B",0);
        Member three = new Member("成员C",0);
        
        manager.show();
        one.show();
        two.show();
        three.show();
        System.out.println("===========");
                //群主发20元,分成3个红包
        ArrayList<Integer>  redList = manager.send(9, 3);
        //三个普通成员收红包
        one.receive(redList);
        two.receive(redList);
        three.receive(redList);
        
        manager.show();//80
        one.show();//8
        two.show();//6
        three.show();//6
        //因为除不尽,所以上面三个是随机的三个数
        }
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值