/*发红包的逻辑。三要素: * 返回值类型:ArrayList<Integer> * 方法名称:send * 参数列表:1.总共发了多少钱 int totalMoney * 2.分成多少份 int count * public ArrayList<Integer>send(int totalMoney,int count){ * //... * } * * 收红包逻辑,三要素: * 返回值类型:void * 方法名称:receive * 参数列表:ArrayList<Integer> * public void receive(ArrayList<Integer>list){ * //... * }/ //定义一个用户类,父类 public class Use { private String name;//姓名 private int money;//余额,当前用户拥有的钱数 //全参构造 public Use(String name, int money) { this.name = name; this.money = money; } //展示一下当前用户有多少钱 public void show(){ System.out.println("我叫:"+name+",我有多少钱,"+money); } public Use() { } 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 Manger extends Use { public Manger(){ } public Manger(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); //发红包需要平均拆分成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; } }
//普通成员类
import java.util.ArrayList; import java.util.Random; //普通成员 public class Member extends Use{ 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); } }
//main方法
import java.util.ArrayList; public class MainRedPacket { public static void main(String[] args) { Manger manger=new Manger("群主",100); Member one=new Member("成员A",0); Member two=new Member("成员B",0); Member three=new Member("成员C",0); manger.show();//100 one.show();//0 two.show();//0 three.show();//0 //群主总共发20快钱,分成3个 ArrayList<Integer> redList=manger.send(20,3); //三个普通成员红包 one.receive(redList); two.receive(redList); three.receive(redList); manger.show();//100-20=80 //6,6,8随机分给三个人 one.show(); two.show(); three.show(); } }