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