性能优化点:

1.使用int不使用double。(单位用分不用元)也省去了还要用math.round四舍五入,把double类型数据只留小数点后前两位。

2.random() 方法用于返回一个随机数,随机数范围为 0.0 =< Math.random < 1.0。所以,当每人只能分到1分钱时,不用生成随机数(随机数只能生成0分,不大于最小值,会死循环)。

import java.util.HashMap;

import java.util.Map;

public class WXTRedPackage {

public static void main(String[] args) {

WXTRedPackage wx = new WXTRedPackage();

// 红包钱数(以分为单位),个数

wx.WXMoney(1000, 50);

}

public void WXMoney(int sum, int num) {

// 创建一个hashmap,把分配出来的人和钱顺序打乱

Map moneyMap = new HashMap();

System.out.println("共计" + sum / 100 + "元红包,分成" + num + "份。开始:");

int min = 0;

int balance = sum;

int money = 0;

for (int i = 0; i < num; i++) {

if ((double) sum / num == 1) {

moneyMap.put(i, 1);

} else {

// 最大可分配数目为剩下的人每人至少1分钱

int max = balance - (num - i - 1) * 1;

// 获取一个0-最大可分配数的随机数

money = (int) (Math.random() * max);

// 最后一个人全分配最后的余额

if (i == num - 1) {

moneyMap.put(i, balance);

break;

} else {

// 分配的金额要超过0份,小于最大可分配数,不符合要求则把人数减一重新循环一次

if (money > min && money < max) {

balance -= money;

moneyMap.put(i, money);

} else {

i = i - 1;

}

}

}

}

for (Integer key : moneyMap.keySet()) {

System.out.println("第" + (key + 1) + "人获取红包"

+ (double) moneyMap.get(key) / 100 + "元!");

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java微信红包开发_java写的伪微信红包功能示例代码相关推荐

  1. java 文件 加解密_Java实现文件的加密解密功能示例

    Java实现文件的加密解密功能示例 发布时间:2020-10-05 22:05:15 来源:脚本之家 阅读:86 作者:FC WORLD!!! 本文实例讲述了Java实现文件的加密解密功能分享给大家供 ...

  2. java拟合曲线图案例_Java实现的n阶曲线拟合功能示例

    本文实例讲述了Java实现的n阶曲线拟合功能.分享给大家供大家参考,具体如下: 前面一篇文章Java实现求解一元n次多项式的方法,能解多项式以后,还需要利用那个类,根据若干采样点数据来对未来数据进行预 ...

  3. 仿微信界面开发的聊天软件和聊天客户端功能介绍

    系统模式:独立系统版本,独立服务器部署,服务器配置:建议 4 核 8G:10M 带宽既可 以下是聊天系统客户端的功能介绍,服务端的功能我会再写一篇文章接着 仿微信聊天开发的聊天软件以及聊天客户端功能介 ...

  4. 视频教程-微信公众平台深度开发v2.0第6季——微信WEB开发、手机WEB技术-微信开发

    微信公众平台深度开发v2.0第6季--微信WEB开发.手机WEB技术 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资 ...

  5. 微信昵称乱码 mysql_微信网页开发获取用户昵称乱码 微信昵称包含emoji表情乱码的解决方案...

    微信网页开发获取用户昵称乱码 微信昵称包含emoji表情乱码的解决方案如下: 问题产生原因:由于数据库及属性一致设为utf8,而utf8只支持1-3个字节.当用户昵称为emoji表情时,获取用户基本信 ...

  6. python企业微信回调_Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例...

    本文实例讲述了Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息.分享给大家供大家参考,具体如下: 说明:此代码用于接收手机微信端发送的消息 #-*- coding:utf-8 ...

  7. 企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET

    企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET 原文:企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET 先看效果 1.本文演示的是 ...

  8. [导入]Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载]...

    Asp.net 2.0 自定义控件开发[创建自定义浮动菜单FloadMenu控件][示例代码下载] 文章来源:http://blog.csdn.net/chengking/archive/2007/0 ...

  9. Java EasyExcel在Web网站中读写Excel的方法及示例代码

    使用EasyExcel可以更容易简单在Web网站中读写Excel,本文主要介绍在Java Web网站中读写Excel方法及示例代码. 原文地址:Java EasyExcel在Web网站中读写Excel ...

最新文章

  1. labview初始学习过程中遇到串口读取框红蓝色交替闪烁的处理
  2. [剑指offer]面试题第[28]题[Leedcode][JAVA][第101题][对称二叉树][队列][递归]
  3. dipole antenna simulation by HFSS
  4. Onvif之设备发现-基于gsoap2.8.27
  5. 图解HTTP笔记(一)
  6. DenseNet实验
  7. LaTex中编译时出现“ Undefined control sequence”问题
  8. 《算法竞赛入门经典》习题及反思 -2
  9. 使用Flink实现索引数据到Elasticsearch
  10. CodeForces 980 E The Number Games
  11. 通过存储介质(例如 USB)传送项目到操作面板
  12. Chrome 扩展程序——FireShot:网页截图工具
  13. 网络安全kali渗透学习 web渗透入门 Google搜索引擎的使用技巧
  14. 在唯一密钥属性“fileExtension”设置为“.json”时,无法添加类型为“mimeMap”的重复集合项...
  15. Dell PowerEdge R640:NVMe直连、NDC网卡、PERC10一览
  16. 平分肥宅快乐水(C++)
  17. react笔记_07组件实例化对象的三大属性
  18. 数电课程设计——电子钟
  19. ibatis之——sqlMapConfig.xml配置文件详解
  20. C 语言计算双色球的中奖率

热门文章

  1. java情人节_程序员也是有情怀的!情人节看程序员如何告白
  2. Linux下PureFTPd配置安装(完整版)
  3. c++序列号生成(注册码)附demo
  4. 读 《世界因你不同》李开复自传
  5. 评价模型中熵值法Excel和Python实现
  6. 机器人工程→合适的课程←
  7. Vue 涉及国家安全漏洞?尤雨溪亲自回应!
  8. matlab生成m序列的函数(本原多项式产生所有m序列)
  9. Infocom 2020 论文快读
  10. 基于粒子群PSO优化灰色神经网络的鞋销量预测