准备工作
先定义三个类,一个是User,group(发红包),Menber(收红包)
思路:
1把群主跟收红包的人共性抽取出来,抽取出来的定义为一个父类,成员参数为String name,int balance,同时里面还需要写一个查看用户还有多少钱的方法。
2创建发红包的类来继承父类,同时写一个发红包的方法,确定三个事情,分别为,返回值类型是一个list的集合,参数列表分别为发的钱数,和总共发多少份红包。
3定义一个收红包的类,也同时继承父类,里面也需要一个收红包的方法,返回值类型为void,参数列表为一个集合。
父类的代码
private String name;//姓名
private int balance;//余额
public User() {
}
public User(String name, int balance) {
this.name = name;
this.balance = balance;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
this.balance = balance;
}
//展示下用户还有多少钱
public void show(){
System.out.println("我叫:"+name+"还有"+balance+"块钱");
}
发红包类
public class group extends User{
public group(){
}
public group(String name, int balance) {
super(name, balance);
}
/**
* 发红包的方法
* @param money
* @param count
* @return
*/
public ArrayList<Integer> send(int money, int count){
//先定义一个集合
ArrayList<Integer> list =new ArrayList<>();
//首先看下群主自己有多少钱
int leftmoney =super.getBalance();
if(money >leftmoney){
System.out.println("钱不够");
return list;
}
//扣钱操作,并且重新设置钱
super.setBalance(leftmoney-money);
//发红包,进行来平均拆分
int avg =money /count;
int mod =money % count; //取余数,剩余零头
//使用循环,把红包放到集合里面去
for (int i = 0; i < count -1; i++) {
list.add(avg);
}
int last =avg +mod;//最后一个红包
list.add(last);
return list;
}
}
收红包的类
public class Menber extends User{
public Menber(){
}
public Menber(String name, int balance) {
super(name, balance);
}
public void receive(ArrayList<Integer> list){
//随机取集合里面的一个索引
int index =new Random().nextInt(list.size());
//根据索引拿到自己被删除的元素。也就是红包,在返回自己
int delta = list.remove(index);
//当前自己成员有多少钱
int money =super.getBalance();
super.setBalance(money+delta);
}
}
效果图
萌新在工作之余,分享下自己学java的过程,这个发红包还有很多欠缺的地方,有时间会继续补齐,有大佬看到的时候,请多多指教,谢谢。