Java模拟微信发红包,一看就会

自2014年1月26日悄悄上线后,微信红包迅速流行开来,其火爆程度,不亚于此前的“打飞机”小游戏。而收到红包后想要提现,就必须绑定银行卡,这样一来,绑定微信支付的用户数量大增。

在这里插入图片描述

  • 先创建一个用户类,有姓名和余额属性,群主类和成员类都继承用户类。实现发红包方法,和展示个人和账户的方法。声明字符串name 声明int类型money
  • show方法 显示成员的姓名和余额
  • 发红包的方法 创建集合发红包 判断余额是否充足
  • 无参构造方法 是为了new出对象的 如果不写 系统会默认存在一个无参构造方法 ,但是当你写了有参构造时系统不会自动添加无参构造 此时会程序会报错
    在继承时 子类默认调用父类的无参构造方法 建议手动写上无参,
1.定义超类用户类,创建show方法展示姓名和余额
public class User {

    private String name;    
    private int money;       

    public User(){      
    }
   
    public void show (){
        System.out.println("我叫"+name+",我有"+money+"元。");
    }

    //有参构造 传入两个值 name money
    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;
    }
}
2. 定义群主类继承用户类,创建发红包的方法
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(totalMoney > leftMoney){
              System.out.println("余额不足");
              return redList;
          }


         super.setMoney(leftMoney - totalMoney);
          int  avg =  totalMoney / count;
          int  mod = totalMoney % count;     //余数

         //除不开的零头,包在最后一个红包里
         for(int i = 0; i < count - 1; i++){
             redList.add(avg);
         }
             int last = avg + mod;
             redList.add(last);
             return  redList;

     }

}

3.定义成员类继承用户类,创建领红包的方法
public class Member  extends User{
    public Member() {
    }

    public Member(String name, int money) {

        super(name, money);
    }
    public  void receive (ArrayList<Integer> list) {
        //从多个红包当中随便抽取一个给自己
        //随机获取一个集合当中的索引编号
        int index = new Random().nextInt(list.size());
        //根据索引从集合中删除
        int delt = list.remove(index);
        //当前成员本来有多少钱
        int money = super.getMoney();
        //加法,并且重新设置回去
        super.setMoney(money + delt);
    }
}
4.创建对象群主和成员,红包集合,开始发红包、领红包
public class MainRed {
    public static void main(String[] args) {
        Manager manager = new Manager("群主",100);
        Member one = new Member("成员A",0);
        Member tow = new Member("成员B",0);
        Member three = new Member("成员C",0);

        manager.show();
        one.show();
        tow.show();
        three.show();
        System.out.println("==========================");

        //群主总共发100块钱,分成3个红包
        ArrayList<Integer> redlist = manager.send(100,3);
        //三个普通成员收红包
        one.receive(redlist);
        tow.receive(redlist);
        three.receive(redlist);

        manager.show();
        one.show();        //随机分给三个人
        tow.show();
        three.show();


    }
}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iiiiiiiice

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值