首先祝大家2021年春節快樂!
春節特別版,分享普通紅包案例
需求:
分析:
(1)一個抽象用戶類:包含了群主和成員的姓名和余額以及查看姓名和余額的方法
(2)群主類:創建一個List集合,引數串列為總共發多少錢,分多少份,平均分,將除不盡的放到最后一個紅包里面,并且要進行判斷,余額是否夠發紅包
(3)普通成員類:從多個紅包中隨便抽取給自己,隨機獲取一個集合當中的索引編號,根據索引,從集合中洗掉,并且得到被洗掉的紅包,將獲取的紅包和余額相加
(4)實作類:創建群主和成員物件,群主發錢,成員收錢,最后看看各自有多少錢
實作:
抽象用戶類:
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;
}
}
群主類:
import java.util.ArrayList;
//創建群主類
public class Leader extends User {
public Leader() {
}
//構造方法傳入群主的姓名和余額
public Leader(String name, int money) {
super(name, money);
}
public ArrayList<Integer> send(int totalMoney, int count) {//發的錢和個數
//需要一個集合,用來存盤若干個紅包余額
ArrayList<Integer> redList = new ArrayList<>();
//首先看一下群主多少錢
int leftMony = super.getMoney();
if (totalMoney > leftMony) {//進行群主的錢與發的錢對比,少了不給發
System.out.println("余額不足");
return redList;
}
//扣錢,重新設定余額,呼叫父類的set方法進行設定,扣除發的錢
super.setMoney(leftMony - 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;
}
}
普通成員類:
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);
}
}
實作類:
import java.util.ArrayList;
public class RedPacket {
public static void main(String[] args) {
Leader leader = new Leader("群主", 1000);//創建群主物件
//創建四個成員物件
Member one = new Member("成員A", 10);
Member two = new Member("成員B", 10);
Member three = new Member("成員C", 10);
Member four = new Member("成員D", 10);
//看一下各自有多少錢
leader.show();
one.show();
two.show();
three.show();
four.show();
System.out.println("-------------------------");
//群主發錢,成員收錢
ArrayList<Integer> readList =leader.send(40,4);//發40元,四個紅包
//成員收錢
one.receive(readList);
two.receive(readList);
three.receive(readList);
four.receive(readList);
//再來看看各自有多少錢
leader.show();
one.show();
two.show();
three.show();
four.show();
}
}
結果:
我叫:群主我有1000元
我叫:成員A我有10元
我叫:成員B我有10元
我叫:成員C我有10元
我叫:成員D我有10元
-------------------------
我叫:群主我有960元
我叫:成員A我有20元
我叫:成員B我有20元
我叫:成員C我有20元
我叫:成員D我有20元
感謝您的閱讀,不足之處歡迎指正!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/259219.html
標籤:java
