案例:
在這裡插入圖片描述
案例圖解:
劃分為三個類,一個父類把金額和姓名都放在父類裡。然後在新建兩個類,分別是群主類和普通成員類。群主類有發紅包的方法,普通成員類裡有收紅包的方法。也就是隻有群主才可以發紅包,普通成員只能收紅包。
程式碼實現:
父類
package cn.itcast.day09.demo14;
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;
}
}
群主類:
package cn.itcast.day09.demo14;
import cn.itcast.day09.demo04.Arraylis;
import java.util.ArrayList;
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);
//發紅包需要平均拆分成為count份
int avg=totalMoney/count;
int mod=totalMoney %count;//餘數,也就是零頭
//下面把紅包一個一個放到集合當中
for (int i = 0; i < count-1; i++) {
redList.add(avg);
//除不開的零頭,抱在最後一個紅包當中
/*if(i==count-1){
redList.add(avg+mod);
}*/
}
int last=(avg+mod);
//除不開的零頭,抱在最後一個紅包當中
redList.add(last);
return redList;
}
}
普通成員類:
package cn.itcast.day09.demo14;
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 recive(ArrayList<Integer> list){
//從多個紅包當中隨便抽取一個,給自己
//隨機獲取一個list集合當中的隨機編號
int index=new Random().nextInt(list.size());
//根據索引,從集合當中刪除,並且得到被刪除的紅包給自己。
int delta=list.remove(index);
//當前成員本來有多少錢
int money=super.getMoney();
//從新設定餘額
super.setMoney(money+delta);
}
}
客戶端:
package cn.itcast.day09.demo14;
import java.util.ArrayList;
public class MainRedPacket {
public static void main(String[] args) {
Manager manager=new Manager("群主",100);
Member one=new Member("成員A",0);
Member two=new Member("成員B",0);
Member three=new Member("成員C",0);
manager.show();
one.show();
two.show();
three.show();
System.out.println("=================================");
ArrayList<Integer> redList=manager.send(20,3);
//三個普通成員收紅包
one.recive(redList);
two.recive(redList);
three.recive(redList);
//群主最新餘額
manager.show();
//成員最新餘額
one.show();
two.show();
three.show();
}
}
結果
本作品採用《CC 協議》,轉載必須註明作者和本文連結