1.具体分析
- 群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则:
- 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。
- 成员领取红包后,保存到成员余额中。
2.具体实现
- 定义一个父类User,作为群主,普通成员的继承
- 创建User类的无参构造方法和全参构造方法
- 创建getter和setter方法(成员变量为私有的,只能使用此方法)
- 创建show()方法
public class User {
private String name;
private int money;
public User() {
}
public User(String name, int money) {
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;
}
}
- 创建一个群主类,继承User类
- 包含一个发红包的方法send
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> 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;
}
}
- 创建一个普通成员类Member,继承User类
- 包含一个收红包的方法receive
import java.util.ArrayList;
import java.util.Random;
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);//收红包
}
}
- 实现的一刻
import java.util.ArrayList;
public class MainRedPacket {
public static void main(String[] args) {
//创建群主
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("===========================");
//群主发红包,分红包
ArrayList<Integer> redList = manager.send(20,3);
//三个普通成员收红包
one.receive(redList);
two.receive(redList);
three.receive(redList);
//显示群成员姓名与余额
manager.show();
one.show();
two.show();
three.show();
System.out.println("===========================");
}
}
- 运行结果
"C:\Program Files\Java\jdk1.8.0_91\bin\java.exe" "-javaagent:F:\Java\IDEA\IntelliJ IDEA 2018.2.4\lib\idea_rt.jar=12572:F:\Java\IDEA\IntelliJ IDEA 2018.2.4\bin" -Dfile.encoding=GBK -classpath "C:\Program Files\Java\jdk1.8.0_91\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\rt.jar;F:\Java\java\out\production\Main" day09.demo11.MainRedPacket
我叫:群主,我有多少钱:100
我叫:成员A,我有多少钱:0
我叫:成员B,我有多少钱:0
我叫:成员C,我有多少钱:0
===========================
我叫:群主,我有多少钱:80
我叫:成员A,我有多少钱:6
我叫:成员B,我有多少钱:6
我叫:成员C,我有多少钱:8
===========================
Process finished with exit code 0
奥利给!!!