Java實(shí)現(xiàn)發(fā)紅包功能
Java發(fā)紅包案例,供大家參考,具體內(nèi)容如下
首先我們需要分析這個(gè)代碼的架構(gòu)是什么,需要什么類組成等。
我們需要建立4個(gè)類,這4個(gè)類分別是用戶類、群主類、成員類,運(yùn)行類;
因?yàn)槿褐黝惡统蓡T類都有共同的特點(diǎn)--------擁有名字和余額,所以需要用戶類去存儲名字與余額
第一步:我們需要建立一個(gè)用戶類,里面存儲的是名字和余額
package Java.RedPacketCode;
public class UserClass {
private String name;
private int balance;
public UserClass(String name, int balance) {
this.name = name;
this.balance = balance;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setBalance(int balance) {
this.balance = balance;
}
public int getBalance() {
return balance;
}
public void show() {
System.out.println("Name:" + name + "****" + "RMB:" + balance);
}
}
第二步:我們需要一個(gè)群主類去繼承用戶類
package Java.RedPacketCode;
import java.util.ArrayList;
public class GroupMainClass extends UserClass {
public GroupMainClass(String name, int balance) {
super(name, balance);
}
public ArrayList<Integer> handOutRedEnvelopes(int amountRequired, int count) {
int existingAmount = super.getBalance();
if (existingAmount < amountRequired) {
System.out.println("Your balance is insufficient!");
}
int money=existingAmount-amountRequired;
super.setBalance(money);
System.out.println(super.getName()+" has"+money+" yuan left");
int avg = amountRequired / count;
int remainder = amountRequired % count;
int decimal = avg + remainder;
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < count - 1; i++) {
list.add(avg);
}
list.add(decimal);
return list;
}
}
第三步:我們需要建立一個(gè)成員類去繼承用戶類
package Java.RedPacketCode;
import java.util.ArrayList;
import java.util.Random;
public class MemberClass extends UserClass {
public MemberClass(String name, int balance) {
super(name, balance);
}
public void redEnvelopes(ArrayList<Integer> list) {
Random r = new Random();
int index = r.nextInt(list.size());
int money = list.remove(index);
int existingAmount = super.getBalance();
int totalAmount = money + existingAmount;
super.setBalance(totalAmount);
}
}
第四步:我們需要建立一個(gè)運(yùn)行類,用來運(yùn)行代碼
package Java.RedPacketCode;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
GroupMainClass gmc = new GroupMainClass("Groupleader", 200);
gmc.show();
MemberClass mc1 = new MemberClass("Tom", 0);
MemberClass mc2 = new MemberClass("Jack", 0);
MemberClass mc3 = new MemberClass("Jenny", 0);
UserClass arrays[] = {mc1, mc2, mc3};
for (int i = 0; i < arrays.length; i++) {
arrays[i].show();
}
System.out.println("==================");
Scanner scanner = new Scanner(System.in);
System.out.println("How much would you like to send");
int money = scanner.nextInt();
System.out.println("How many red packets would you like to send");
int count = scanner.nextInt();
ArrayList<Integer> list = gmc.handOutRedEnvelopes(money, count);
mc1.redEnvelopes(list);
mc2.redEnvelopes(list);
mc3.redEnvelopes(list);
for (int i = 0; i < arrays.length; i++) {
arrays[i].show();
}
}
}
希望大佬們多多指教。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
RabbitMQ消費(fèi)者限流實(shí)現(xiàn)消息處理優(yōu)化
這篇文章主要介紹了RabbitMQ消費(fèi)者限流實(shí)現(xiàn)消息處理優(yōu)化,消費(fèi)者限流是用于消費(fèi)者每次獲取消息時(shí)限制條數(shù),注意前提是手動確認(rèn)模式,并且在手動確認(rèn)后才能獲取到消息,感興趣想要詳細(xì)了解可以參考下文2023-05-05
探索jedis連接池預(yù)熱優(yōu)化高并發(fā)
這篇文章主要為大家介紹了jedis連接池預(yù)熱優(yōu)化高并發(fā)深入探索示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Mybatis游標(biāo)查詢大量數(shù)據(jù)方式
這篇文章主要介紹了Mybatis游標(biāo)查詢大量數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
Spring.Net在MVC中實(shí)現(xiàn)注入的原理解析
這篇文章主要介紹了Spring.Net在MVC中實(shí)現(xiàn)注入的原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Java求10到100000之間的水仙花數(shù)算法示例
這篇文章主要介紹了Java求10到100000之間的水仙花數(shù)算法,結(jié)合實(shí)例形式分析了水仙花數(shù)的概念及相應(yīng)的java算法實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-10-10
解決Java項(xiàng)目中request流只能獲取一次的問題
Java項(xiàng)目開發(fā)中可能存在以下幾種情況,你需要在攔截器中統(tǒng)一攔截請求和你項(xiàng)目里可能需要搞一個(gè)統(tǒng)一的異常處理器,這兩種情況是比較常見的,本文將給大家介紹如何解決Java項(xiàng)目中request流只能獲取一次的問題,需要的朋友可以參考下2024-02-02

