发红包案例
发红包案例
分析:
用户类:(姓名和余额)
群主类:继承用户类(发红包的方法)
普通成员类:继承用户类(收红包的方法)
发红包的逻辑:
返回值类型:ArrayList<Integer>
方法名称: send
参数列表: 1.总共发多少钱 int totalMoney
2.分成多少份 int coun
收红包的逻辑:
返回值类型:void
方法名称: receive
参数列表 ArrayList<Integer>
//用户类
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); } }
//群主类 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 money = super.getMoney(); if (totalMoney>money){ System.out.println("余额不足"); return redList; } //扣钱 super.setMoney(money - totalMoney); //发红包需要拆分为count份 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; } }
//普通成员 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 delta = list.remove(index); //当前成员自己本来多少钱 int money = super.getMoney(); //加法,从新设置回去 super.setMoney(money+delta); } }
测试:
public class UserTest { public static void main(String[] args) { Manager manager = new Manager("群主",300); Member A = new Member("成员A", 0); Member B = new Member("成员B", 0); Member C = new Member("成员C", 0); manager.show(); A.show(); B.show(); C.show(); System.out.println("======================"); //群主一共发20,分为3份 ArrayList<Integer> redList = manager.send(20,3); A.receive(redList); B.receive(redList); C.receive(redList); manager.show(); A.show(); B.show(); C.show(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix