羣主發普通紅包
羣主發普通紅包。某羣有多名成員,羣主給成員發普通紅包。普通紅包的規則:
- 羣主的一筆金額,從羣主餘額中扣除,平均分成n等份,讓成員領取。
- 成員領取紅包後,保存到成員餘額中。
請根據描述,完成案例中所有類的定義以及指定類之間的繼承關係,並完成發紅包的操作。
案例分析
父類:User { 用戶名 餘額 展示信息(); }
子類:羣主 { 發紅包 }
成員{ 開紅包 }
案例實現
User
package cn.luis.demo12;
public class User {
private String name;
private int money;
public User() {
}
public User(String name, int money) {
this.name = name;
this.money = money;
}
// 展示一下當前用戶有多少錢
public void show() {
System.out.println(name + "有多少錢:" + 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;
}
}
Manager
package cn.luis.demo12;
import java.util.ArrayList;
/*
羣主
*/
public class Manager extends User {
public Manager() {
// super();
}
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; // 返回空集合
}
System.out.println("開始發紅包啦");
System.out.println("==================");
// 扣錢,其實就是重新設置餘額
super.setMoney(leftMoney - totalMoney);
// 發紅包,需要平均拆分成爲count份
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;
}
}
Member
package cn.luis.demo12;
import java.util.ArrayList;
import java.util.Random;
/*
普通成員
*/
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 delta = list.remove(index);
// 當前成員自己本來有多少錢
int money = super.getMoney();
// 加法,並且重新設置回去
super.setMoney(money + delta);
}
}
MainPacket
package cn.luis.demo12;
import java.util.ArrayList;
import java.util.Scanner;
public class MainPacket {
public static void main(String[] args) {
Manager boss = new Manager("獨眼瞎",100);
Member m1 = new Member("鋼鐵俠", 0);
Member m2 = new Member("黑寡婦", 0);
Member m3 = new Member("蜘蛛俠", 0);
Member m4 = new Member("浩克", 0);
boss.show();
m1.show();
m2.show();
m3.show();
m4.show();
System.out.println("==================");
ArrayList<Integer> redList = boss.send(25, 4);
m1.receive(redList);
m2.receive(redList);
m3.receive(redList);
m4.receive(redList);
boss.show();
m1.show();
m2.show();
m3.show();
m4.show();
}
}
結果:
獨眼瞎有多少錢:100
鋼鐵俠有多少錢:0
黑寡婦有多少錢:0
蜘蛛俠有多少錢:0
浩克有多少錢:0
==================
開始發紅包啦
==================
獨眼瞎有多少錢:75
鋼鐵俠有多少錢:6
黑寡婦有多少錢:6
蜘蛛俠有多少錢:7
浩克有多少錢:6