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. WMI技术介绍和应用——查询硬件信息
  2. Oracle PLSQL 导出数据table xx contains one or more CLOB columns 解决方案
  3. Paste模块的世界
  4. 【APUE】Chapter17 Advanced IPC sign extension 结构体内存对齐
  5. c语言蚂蚁搬,《蚂蚁搬豆》教案
  6. 计算机缺失esul.dll,SceneUI.ES.dll
  7. db2导入发生错误显示不是绝对路径_python编程常见错误总结
  8. close wait 过多原因_从Linux源码看TIME_WAIT状态的持续时间
  9. uniapp H5 扫码 扫一扫 功能
  10. python实现pdf阅读器_PyQt5 从零开始制作 PDF 阅读器(一)
  11. 建议平面设计爱好者要学的软件,和一些CDR常见问题
  12. 恢复扩容U盘实际容量 检查正版U盘 U盘量产工具 U盘修复工具使用方法
  13. vue路由传参的三种方式/含页面刷新参数丢失解决方案(详细)
  14. 现在公司都不缺人了?软件测试工作经历3年,面试居然被坑了....
  15. 推荐一个很不错的桌面便笺工具magic notes
  16. WordPress搭建过的知名网站有哪些?
  17. minst手写数字识别(带界面)
  18. [Linux]tomcat 严重: Could not contact localhost:80. Tomcat may not be running
  19. STM32调试485(sp3485)技术总结
  20. java实现哈夫曼编码(huffman)编码

热门文章

  1. LoadRunner 的简单使用
  2. 什么是企业oa办公系统登录入口?oa办公系统哪家好?
  3. 原味的SM3密码杂凑算法
  4. 网络舆情分析关键词怎么获取的系统平台方法
  5. 算法相关-互联网计算广告学
  6. live555服务器测试
  7. 1992-2022年31省人均gdp/各省人均地区生产总值
  8. 优秀,好用,一年使用经验推荐给你几款优秀的程序员一定要知道的画图工具
  9. 大数据可视化的方法、挑战及进展
  10. 1000以内的水仙花数c语言实现