定义用户类,群主和成员的父类。抽取其共性内容
package day09.demo06; public class User { // 姓名 private String name; // 钱的余额 private int money; public void show() { System.out.println("我的名字是" + this.name +" "+ "我的钱总数是" + this.money + "\t"); } // 无参构造 public User() { } // 全参数构造 public User( String name,int money) { this.money = money; this.name = name; } // 获取余额的方法 public int getMoney() { return money; } // 设置余额的方法 public void setMoney(int money) { this.money = money; } // 获取名字的方法 public String getName() { return name; } // 设置名字的方法 public void setName(String name) { this.name = name; } }
定义群主类
package day09.demo06; import java.util.ArrayList; public class Admin extends User { // 空参构造 public Admin() { // 调用父类中的空参构造 super(); } // 全参数构造 public Admin( String name,int money) { // 调用父类中的有参数构造 super( name,money); } // 群主发红包方法 public ArrayList<Integer> send(int totalMoney, int count) { // 定义一个集合,存储若干个红包的余额 ArrayList<Integer> redList = new ArrayList<>(); // 判断自己的钱包的钱,是否大于要发的钱 if (super.getMoney() < totalMoney) { System.out.println("余额不足"); return redList; // } // 发了多少钱,就要扣除多少钱。重新设置群主的金额 super.setMoney(super.getMoney() - totalMoney); //把要发的钱,平分成要发的份数 int avg = totalMoney / count; // 余数,添加到最后一个红包 int mod = totalMoney % count; for (int i = 0; i < count - 1; i++) { redList.add(avg); } // 最后一个红包 redList.add(avg + mod); //返回包装好的红包 return redList; } }
定义用户类
package day09.demo06; import java.util.ArrayList; import java.util.Random; public class Member extends User { // 空参构造 public Member() { // 调用父类中的空参构造 super(); } // 全参数构造 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); // 难道的红包的钱,加上用来的钱,重新设置金额 super.setMoney(super.getMoney() + delta); } }
定义测试类
package day09.demo06; public class Test { public static void main(String[] args) { // 创建群主对象 Admin ad = new Admin("群主", 188); // 创建成员对象 Member one = new Member("成员甲", 0); Member two = new Member("成员乙", 0); Member three = new Member("成员丙", 0); // 查看群主余额 ad.show(); // 查看成员余额 one.show(); two.show(); three.show(); System.out.println("----------------------------------"); //群主发20红包,发3个人 ad.send(20, 3); //成员收红包 one.receive(ad.send(20, 3)); two.receive(ad.send(20, 3)); three.receive(ad.send(20, 3)); // 查看群主余额 ad.show(); // 查看成员余额 one.show(); two.show(); three.show(); } }
程序运行结果,因为调用了Random类,所以每次不一样
我的名字是群主 我的钱总数是188
我的名字是成员甲 我的钱总数是0
我的名字是成员乙 我的钱总数是0
我的名字是成员丙 我的钱总数是0
----------------------------------
我的名字是群主 我的钱总数是108
我的名字是成员甲 我的钱总数是6
我的名字是成员乙 我的钱总数是6
我的名字是成员丙 我的钱总数是6