Red envelopes using Java implementation of the function.
structure:
package redPocket
User.java
Manager.java
Member.java
Demo.java
Ideas:
Manager and Member class inherits User, Manager class implements the functions of the main group of red envelopes, Member class implements the group members received a red envelope function. Demo test code.
Code:
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 ; } the ArrayList <the Float> = redPockets new new the ArrayList <> (); the this .setMoney ( the this .getMoney () - totalMoney); IF (isRandom) { the Random Random = new new the Random (); the ArrayList <the Float> PERCENTAGE = new new the ArrayList <> (); // to store a ratio between 0.0 to 1.0 to be able to get all the percentage for ( int I = 0; I <COUNT; I ++ ) { percentage.add (random.nextFloat ()); } //Calculate the sum of percentage, then calculate the proportion of each ratio a float totalPercentage = SUM (PERCENTAGE); // this is multiplied by the proportion totalMoney calculating how much each person drawn for ( int I = 0; I <COUNT; I ++ ) { redPockets .add (percentage.get (I) / * totalPercentage totalMoney); } } the else { a 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; } }
Package redPocket; Import of java.util.ArrayList; Import java.util.Random; public class Member the extends the User { public Member () { } public Member (String name, a float Money) { Super (name, Money); } public void the receive (the ArrayList <the Float> redPockets) { // random in a list int index = new new the random () the nextInt (redPockets.size ());. a float Money = redPockets.get (index); // be pumped the index excluding redPockets.remove(index); System.out.println(this.getName() + "抽到了" + money); this.setMoney(this.getMoney() + money); } }
package redPocket; import java.util.ArrayList; public class Demo { public static void main(String[] args) { Manager m = new Manager("Manager", 1000.0F); Member m1 = new Member("Member1", 100.0F); Member m2 = new Member("Member2", 45.56F); ArrayList<Float> redPockets = m.send(888.88F, 8, true); System.out.println(redPockets); m1.receive(redPockets); m2.receive(redPockets); System.out.println(redPockets); System.out.println(m); System.out.println(m1); System.out.println(m2); } }