Java 实现简单的发红包代码

一、实现思路

1、参考微信发红包,会有2个参数: 红包个数红包金额 ,假设红包个数是num,红包金额是money ,使用随机数的方式进行划分,不考虑多线程情况下的并发情况, 一个简单的实现。

二、代码实现

1、红包代码如下

/*** 发红包的代码* @param num  红包个数* @param money 红包金额* @return*/
static List<Double> hb(int num , double money){//todo:省略红包个数、红包金额、单个红包最低 0.01的情况校验ArrayList<Double> list = new ArrayList<>();double sum = 0D ; // 记录已分配的红包金额double amount = money ; //记录余额while (num > 0){num--;double v = 0 ;if(num != 0){v = ThreadLocalRandom.current().nextDouble(0, amount);}else {// 最后一个红包v = money -sum ;}BigDecimal decimal = BigDecimal.valueOf(v).setScale(2, RoundingMode.HALF_UP);double hb = decimal.doubleValue();sum += hb;amount = money - sum;System.out.println(hb);list.add(hb);}System.out.println("sum:"+ sum);System.out.println("amount:"+ amount);return list ;
}

        2、测试:


public static void main(String[] args) {List<Double> hb = hb(5, 10);System.out.println(hb);double v = hb.stream().collect(Collectors.summingDouble(x -> {return x;})).doubleValue();System.out.println("合计金额:" +v);
}

        3、输出结果如下:

6.72
1.71
0.87
0.62
0.08
sum:9.999999999999998
amount:1.7763568394002505E-15
[6.72, 1.71, 0.87, 0.62, 0.08]
合计金额:10.0Process finished with exit code 0

PS:以上,即是一个简单的发红包代码实现,还可以做更细的情况需考虑:

红包个数 校验
红包金额 金额校验
单个红包最低 0.01的情况校验
并发情况下的处理
...

Java 实现简单的发红包代码相关推荐

  1. java发红包课程设计_JAVA 实现简单的发红包案例

    1 package Demo511; 2 3 import java.util.ArrayList; 4 5 public class DemoSend { 6 public static void ...

  2. java编程打印以下图形,分享java打印简单图形的实现代码

    我们平时都是使用的画图工具进行简单图形的绘制,今天我们使用java打印一些简单的图形 实现代码如下 package test; /** * * @author hanzel * @打印图形 * */ ...

  3. java打印 好看的图形_分享java打印简单图形的实现代码

    我们平时都是使用的画图工具进行简单图形的绘制,今天我们使用java打印一些简单的图形 实现代码如下 package test; /** * * @author hanzel * @打印图形 * */ ...

  4. Java程序模仿随机发红包

    模仿随机发红包 输入金额:xxx         输入发几个包:xx         第一个人xxx元         第二个人xxx元         ...... import java.math ...

  5. java练习--群主发红包

    无论群主和群成员都有属性name,money,放在父类User里 package com.qml.study;public class User {private String name ;priva ...

  6. atm java代码_用JAVA制作简单的ATM的代码 求教

    展开全部 ok,稍等 呵呵,已经给你拆分成了两个独立的类了. 我再吧注释加起吧. 哪儿e68a8462616964757a686964616f31333262363734不清楚的可以给我留言嘛,刚开始 ...

  7. python简易发红包_python+redis简单实现发红包程序

    redis是什么? Redis 是一个高性能的key-value数据库! 想进一步了解请移步搜索引擎自行查找. 编写这个小程序的目的就是对redis进行一个简单的小操作,对redis有一个初步的了解, ...

  8. JAVA 最简单获取系统时间代码 LocalDateTime( 以yyyy-MM-dd HH:mm:ss.SSS格式显示)

    直接上代码,简单粗暴: import java.time.LocalDateTime; import java.time.format.DateTimeFormatter;/*** @Author : ...

  9. 词法分析器java_利用Java实现简单的词法分析器实例代码

    首先看下我们要分析的代码段如下: 输出结果如下: 输出结果(a).PNG 输出结果(b).PNG 输出结果(c).PNG 括号里是一个二元式:(单词类别编码,单词位置编号) 代码如下: package ...

最新文章

  1. linux系统时间相关
  2. javascript实现base64加解密
  3. Visual Studio 15.4发布,新增多平台支持
  4. 基于LSTM电商评论情感分析-多评价指标可视化版(内附源码)【自然语言处理NLP-100例】
  5. 怎样远程连接服务器后上传文件,远程登录服务器后怎样上传文件
  6. 文档02_JavaScript
  7. 谈谈那些“你以为”的安全
  8. 大一上c语言基础知识题
  9. 浅谈安科瑞无线测温系统在生物制药工厂中的应用
  10. 魅力主播曹启泰《上班这点事》经典语录
  11. 使用karma + mocha + sinon 测试 Ajax 请求
  12. html5 霸刀,基于Html5技术研发3D页游《霸刀》3月28日首测
  13. 小学计算机三年级冀教版,冀教版小学三年级上册信息技术课件
  14. 紫金计算机科学技术男女比例,福建省内7所高校公布2020级新生数据!你的大学男女比例是多少?...
  15. FDTD仿真、解决微环透射率大于1 T大于1的问题
  16. 前端开发工程师快速装机指南
  17. 20岁到30岁,他从实习生做到百度最高决策层!
  18. 两个有序顺序表la,lb合并为lc(不删除重复)。
  19. web3 solidity 基础 ERC20 大白话搞懂
  20. python123字典增加元素_python 字典元素操作

热门文章

  1. Windows 2012 R2 如何设置同时多点远程系统或3人以上同时登录系统
  2. VMware虚拟机实现局域网互通
  3. 数字图像处理例题整理
  4. python:二.Python教程
  5. PAP认证、CHAP认证
  6. 如何更改音频格式?分享这几个简单的转换方法给你
  7. 6.4.1-packet-tracer---implement-etherchannel
  8. 智能三子棋——保姆级教学。
  9. LaTex - PPT 换页动态效果(亲测有效)
  10. Linux搭建Web网站