Java 发红包
使用Java实现发红包的功能。
结构:
package redPocket
User.java
Manager.java
Member.java
Demo.java
思路:
Manager和Member类继承User,Manager类实现群主发红包的功能,Member类实现群员收红包的功能。Demo测试代码。
代码:
package redPocket; public class User { private String name; private float money; public User() { } public User(String name, float money) { this.name = name; this.money = money; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getMoney() { return money; } public void setMoney(float money) { this.money = money; } @Override public String toString() { return "name:" + this.name + "; " + "money:" + this.money + "; "; } }
package redPocket; import java.util.ArrayList; import java.util.Random; public class Manager extends User { public Manager() { } public Manager(String name, float money) { super(name, money); } public ArrayList<Float> send(float totalMoney, int count, boolean isRandom) { if (!hasEnoughMoney(totalMoney)) { System.out.println("You do not have enough money!"); return null; } ArrayList<Float> redPockets = new ArrayList<>(); this.setMoney(this.getMoney() - totalMoney); if (isRandom) { Random random = new Random(); ArrayList<Float> percentage = new ArrayList<>(); // 将所有人抽到的0.0~1.0之间的比率存储到percentage中 for (int i = 0; i < count; i++) { percentage.add(random.nextFloat()); } // 计算percentage总和,再计算每个比率的占比 float totalPercentage = sum(percentage); // 将这个占比乘以totalMoney算出每个人抽到了多少 for (int i = 0; i < count; i++) { redPockets.add(percentage.get(i) / totalPercentage * totalMoney); } } else { float average = totalMoney / count; for (int i = 0; i < count; i++) { redPockets.add(average); } } return redPockets; } private boolean hasEnoughMoney(float totalMoney) { if (this.getMoney() >= totalMoney) { return true; } return false; } public float sum(ArrayList<Float> percentage) { float totalPercentage = 0.0F; for (int i = 0; i < percentage.size(); i++) { totalPercentage += percentage.get(i); } return totalPercentage; } }