自2014年1月26日悄悄上线后,微信红包迅速流行开来,其火爆程度,不亚于此前的“打飞机”小游戏。而收到红包后想要提现,就必须绑定银行卡,这样一来,绑定微信支付的用户数量大增。
- 先创建一个用户类,有姓名和余额属性,群主类和成员类都继承用户类。实现发红包方法,和展示个人和账户的方法。声明字符串name 声明int类型money
- show方法 显示成员的姓名和余额
- 发红包的方法 创建集合发红包 判断余额是否充足
- 无参构造方法 是为了new出对象的 如果不写 系统会默认存在一个无参构造方法 ,但是当你写了有参构造时系统不会自动添加无参构造 此时会程序会报错
在继承时 子类默认调用父类的无参构造方法 建议手动写上无参,
1.定义超类用户类,创建show方法展示姓名和余额
public class User {
private String name;
private int money;
public User(){
}
public void show (){
System.out.println("我叫"+name+",我有"+money+"元。");
}
//有参构造 传入两个值 name money
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;
}
}
2. 定义群主类继承用户类,创建发红包的方法
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;
}
}
3.定义成员类继承用户类,创建领红包的方法
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 delt = list.remove(index);
//当前成员本来有多少钱
int money = super.getMoney();
//加法,并且重新设置回去
super.setMoney(money + delt);
}
}
4.创建对象群主和成员,红包集合,开始发红包、领红包
public class MainRed {
public static void main(String[] args) {
Manager manager = new Manager("群主",100);
Member one = new Member("成员A",0);
Member tow = new Member("成员B",0);
Member three = new Member("成员C",0);
manager.show();
one.show();
tow.show();
three.show();
System.out.println("==========================");
//群主总共发100块钱,分成3个红包
ArrayList<Integer> redlist = manager.send(100,3);
//三个普通成员收红包
one.receive(redlist);
tow.receive(redlist);
three.receive(redlist);
manager.show();
one.show(); //随机分给三个人
tow.show();
three.show();
}
}