Java 实现简单的发红包代码
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 实现简单的发红包代码相关推荐
- java发红包课程设计_JAVA 实现简单的发红包案例
1 package Demo511; 2 3 import java.util.ArrayList; 4 5 public class DemoSend { 6 public static void ...
- java编程打印以下图形,分享java打印简单图形的实现代码
我们平时都是使用的画图工具进行简单图形的绘制,今天我们使用java打印一些简单的图形 实现代码如下 package test; /** * * @author hanzel * @打印图形 * */ ...
- java打印 好看的图形_分享java打印简单图形的实现代码
我们平时都是使用的画图工具进行简单图形的绘制,今天我们使用java打印一些简单的图形 实现代码如下 package test; /** * * @author hanzel * @打印图形 * */ ...
- Java程序模仿随机发红包
模仿随机发红包 输入金额:xxx 输入发几个包:xx 第一个人xxx元 第二个人xxx元 ...... import java.math ...
- java练习--群主发红包
无论群主和群成员都有属性name,money,放在父类User里 package com.qml.study;public class User {private String name ;priva ...
- atm java代码_用JAVA制作简单的ATM的代码 求教
展开全部 ok,稍等 呵呵,已经给你拆分成了两个独立的类了. 我再吧注释加起吧. 哪儿e68a8462616964757a686964616f31333262363734不清楚的可以给我留言嘛,刚开始 ...
- python简易发红包_python+redis简单实现发红包程序
redis是什么? Redis 是一个高性能的key-value数据库! 想进一步了解请移步搜索引擎自行查找. 编写这个小程序的目的就是对redis进行一个简单的小操作,对redis有一个初步的了解, ...
- JAVA 最简单获取系统时间代码 LocalDateTime( 以yyyy-MM-dd HH:mm:ss.SSS格式显示)
直接上代码,简单粗暴: import java.time.LocalDateTime; import java.time.format.DateTimeFormatter;/*** @Author : ...
- 词法分析器java_利用Java实现简单的词法分析器实例代码
首先看下我们要分析的代码段如下: 输出结果如下: 输出结果(a).PNG 输出结果(b).PNG 输出结果(c).PNG 括号里是一个二元式:(单词类别编码,单词位置编号) 代码如下: package ...
最新文章
- WMI技术介绍和应用——查询硬件信息
- Oracle PLSQL 导出数据table xx contains one or more CLOB columns 解决方案
- Paste模块的世界
- 【APUE】Chapter17 Advanced IPC sign extension 结构体内存对齐
- c语言蚂蚁搬,《蚂蚁搬豆》教案
- 计算机缺失esul.dll,SceneUI.ES.dll
- db2导入发生错误显示不是绝对路径_python编程常见错误总结
- close wait 过多原因_从Linux源码看TIME_WAIT状态的持续时间
- uniapp H5 扫码 扫一扫 功能
- python实现pdf阅读器_PyQt5 从零开始制作 PDF 阅读器(一)
- 建议平面设计爱好者要学的软件,和一些CDR常见问题
- 恢复扩容U盘实际容量 检查正版U盘 U盘量产工具 U盘修复工具使用方法
- vue路由传参的三种方式/含页面刷新参数丢失解决方案(详细)
- 现在公司都不缺人了?软件测试工作经历3年,面试居然被坑了....
- 推荐一个很不错的桌面便笺工具magic notes
- WordPress搭建过的知名网站有哪些?
- minst手写数字识别(带界面)
- [Linux]tomcat 严重: Could not contact localhost:80. Tomcat may not be running
- STM32调试485(sp3485)技术总结
- java实现哈夫曼编码(huffman)编码