发红包案例
一个简单的发红包的案例,里面用到了集合和继承,老板从自己余额拿出一些钱,给员工发红包,平均分给每个人一定的红包金额,如果金额不够平均分,就把平均分后剩余的钱加到最后一个红包中。需要用到的类有用户类(User类),老板类(Boss类),员工类(Member类),User类里有Boss类,Member类的共同属性和方法,Boss类负责发红包,Member类负责收红包。最后可以用主类测试结果。
用户类
package com.redlist;
public class User {
private String name;
private int total;
public User() {
}
public User(String name, int total) {
this.name = name;
this.total = total;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
/**
* 用于展示当前用户的名字以及目前余额是多少
*/
public void show(){
System.out.println("当前姓名为 :"+ name + " 余额为:" + total);
}
}
Boss类
package com.redlist;
import java.util.ArrayList;
import java.util.List;
public class Boss extends User {
public Boss (){}
public Boss(String name, int total) {
super(name, total);
}
/**
* 发红包的方法
* @param money 红包的总金额
* @param count 分成的份数
* @return 返回一个红包的集合
*/
public List<Integer> send(int money, int count){
int left = super.getTotal();
if(left < money){
System.out.println("余额不足");
return null;
}
List<Integer> redlist = new ArrayList<>();
int avg = money / count;
int extra = money % count;
for (int i = 0; i < count - 1; i++) {
redlist.add(avg);
}
int last = avg + extra;
redlist.add(last);
int total = super.getTotal();
super.setTotal(total - money);
return redlist;
}
}
员工类
package com.redlist;
import java.util.List;
import java.util.Random;
public class Member extends User{
public Member(){ }
public Member(String name, int total) {
super(name, total);
}
/**
* 接收红包的方法
* @param redlist List类型的集合
*/
public void receive (List<Integer> redlist){
if (null == redlist){
System.out.println("不存在");
}
int index = new Random().nextInt(redlist.size());
int money = redlist.get(index);
redlist.remove(index);
int total = super.getTotal();
super.setTotal(total + money);
}
}
主类
package com.redlist;
import java.util.List;
public class TestRed {
public static void main(String[] args) {
Boss boss = new Boss("boss",100);
Member member1 = new Member("A",10);
Member member2 = new Member("B",20);
Member member3 = new Member("C",30);
List<Integer> redlist = boss.send(20,3);
member1.receive(redlist);
member2.receive(redlist);
member3.receive(redlist);
boss.show();
member1.show();
member2.show();
member3.show();
}
}