java 队列实现发红包 简单逻辑

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java 队列实现发红包简单逻辑队列是一种先进先出(First-In-First-Out,FIFO)的数据结构,我们可以通过队列来实现发红包的逻辑。

在发红包的过程中,我们需要一个发送者和多个接收者。

发送者
会将一定数量的金额平均分配给接收者,每个接收者都能获得一定数
量的金额。

首先,我们需要定义一个队列来存储接收者的信息。

队列中的每
个元素都包含接收者的姓名和金额。

```java
import java.util.LinkedList;
import java.util.Queue;
class Receiver {
String name;
double amount;
public Receiver(String name, double amount) {
= name;
this.amount = amount;
}
}
Queue<Receiver> receiverQueue = new LinkedList<>();
```
接下来,我们需要编写发送红包的逻辑。

发送红包的方法需要输入发送者的姓名、发送的金额、以及接收者的姓名列表。

```java
public void sendRedPacket(String senderName, double amount, String[] receiverNames) {
double avgAmount = amount / receiverNames.length;
//将接收者信息添加到队列中
for (String receiverName : receiverNames) {
receiverQueue.add(new Receiver(receiverName, avgAmount));
}
}
```
然后,我们需要编写接收红包的逻辑。

接收红包的方法需要输入接收者的姓名。

```java
public void receiveRedPacket(String receiverName) {
Receiver receiver = receiverQueue.poll();
if (receiver != null &&
.equals(receiverName)) {
System.out.println( + "收到红包:" + receiver.amount + "元");
} else {
System.out.println("没有红包了");
}
```
最后,我们可以编写一个简单的测试方法来测试我们实现的逻辑。

```java
public static void main(String[] args) {
RedPacket redPacket = new RedPacket();
redPacket.sendRedPacket("张三", 100, new String[]{"李四", "王五", "赵六"});
redPacket.receiveRedPacket("李四");
redPacket.receiveRedPacket("王五");
redPacket.receiveRedPacket("赵六");
redPacket.receiveRedPacket("李四");
}
当我们执行这段代码时,输出结果为:
```
李四收到红包:33.333333333333336元
王五收到红包:33.333333333333336元
赵六收到红包:33.333333333333336元
没有红包了
```
这样,我们就成功实现了用队列来进行发红包的逻辑。

值得注意的是,这个实现方式只是一个简单的示例,实际情况中可能还需要考虑一些其他因素,比如红包的金额是否需要保留小数点后两位、接收者姓名的唯一性等等。

对于更加复杂的需求,可能需要更加详细和精确的逻辑实现。

相关文档
最新文档