红包 java_利用java发红包(1)之红包分配方法
红包发放:
涉及继承:
一共三个类:
user mannger member
其中后两个类继承user类
其中mannger需要的方法是send(发红包)
发红包有两种常见的方法借用Arraylist:1,平均法 2,手气
1.平均法,只需要将所需发放的红包分成等份就可以了
private void average(ArrayList list, int totalMoney, int num) {
this.checkMoney(super.getRemainder() - totalMoney);
//分成num等分 int avr = totalMoney / num;
//有余则放在最后一个红包中 int mod = totalMoney % num;
for (int i = 0; i < num - 1; i++) {
list.add(avr);
}
list.add(avr + mod);
}
2.手气法
我们需要首先设定一个最低红包数:2分,(分是发放的单位)我的方法是:我们首先需要有我们的基本盘,将2分分配下去,如果这个时候有剩余,存在一个变量count中。
我们则继续分配,但是在分配中,我们每一次循环得到的随机数money1,那么他的范围应该是递减的,不然有可能分配到最后,分出去的红包大于我们发放的钱数。所以我们应该让范围count -= money1;
当count还有剩余时,我们随机抽取一个红包,将count放入
private void luck(ArrayList list, int totalMoney, int num) {
int flag = 0;
int avr = totalMoney / num;
this.checkMoney(avr);
//保住最低保证
int count = totalMoney - 2 * num;
this.average(list, 2 * num, num);
Random r = new Random();
while (count > 0 && flag < num) {
int money1 = r.nextInt(count);
count -= money1;
list.set(flag, list.get(flag) + money1);
flag ++;
}
if(count > 0){
int randomNum = r.nextInt(num);
int money2 = list.get(randomNum);
money2 += count;
list.set(randomNum,money2);
}
}
而我们的member只需要做一件事取list中的一个红包并把它拆开,即receive方法
public void receive(ArrayList list){
Random r = new Random();
int num = r.nextInt(list.size());
int remove = list.remove(num);
super.setRemainder(remove);
}
最后我设置了五个群成员来抢红包,下面是运行结果图
红包 java_利用java发红包(1)之红包分配方法相关推荐
- 利用java反射调用类的的私有方法
http://blog.csdn.net/sunyujia/article/details/2501709 今天和一位朋友谈到父类私有方法的调用问题,本来以为利用反射很轻松就可以实现,因为在反射看来根 ...
- 利用java反射调用类的的私有方法--转
原文:http://blog.csdn.net/woshinia/article/details/11766567 1,今天和一位朋友谈到父类私有方法的调用问题,本来以为利用反射很轻松就可以实现,因为 ...
- 利用Java反射机制调用类的私有方法
利用Java反射机制调用类的私有方法 引言 来吧·展示 参考链接 引言 如何调用其他类的私有方法呢? 可以利用Java的反射机制,去调用其他类的私有方法 来吧·展示 package cn.learn. ...
- 重复最多字符次数java_利用Java实现求字符串中出现次数最多的字符及次数
利用Java实现求字符串中出现次数最多的字符及次数 发布时间:2020-11-12 16:57:24 来源:亿速云 阅读:108 作者:Leah 这篇文章将为大家详细讲解有关利用Java实现求字符串中 ...
- 天天酷跑java_利用Java怎么实现一个天天酷跑游戏
利用Java怎么实现一个天天酷跑游戏 发布时间:2020-12-15 17:25:03 来源:亿速云 阅读:102 作者:Leah 利用Java怎么实现一个天天酷跑游戏?很多新手对此不是很清楚,为了帮 ...
- java编写字符串连接程序注释_一种利用JAVA注释支持多行字符串的方法
从BeetlSql项目将SQL全放在Beetl模板里得到启发,又想到一个比较偏门的用法.以下代码实测通过,详见jSqlBox项目的test\examples\multipleLineSQL\SqlTe ...
- excel转换pdf java_用Java把Excel转换成PDF的方法
用Java把Excel转换成PDF的方法 发布时间:2020-05-30 11:48:45 来源:亿速云 阅读:216 作者:鸽子 Java 将Excel转为PDF 本文将介绍在Java程序中如何将E ...
- 群发功能java_利用java实现邮箱群发功能
本文实例为大家分享了java实现邮箱群发的具体代码,供大家参考,具体内容如下 近来无事,在网上看了一些大牛文章,其中看到一篇比较好的,分享给大家! 下面是代码 邮箱实体 import java.io. ...
- 上网监控程序java_利用java实现一个简单的远程监控程序
一般的远程监控软件都是用c或者c++等语言开发的,而使用java如何来实现相同的功能呢. 首先我们先介绍一下一个简单的远程监控程序的实现原理. 功能一,远程屏幕监视 (1) 必须要有监控端与被监控端, ...
最新文章
- cleanmymac能够很方便的清理mac上面没用的软件,尤其是这个清理大文件的功能
- 小学计算机几年级学3d建模,学了4年手绘和建模,你终于不会思考了
- Django REST framework 开始
- jQuery_基本选择器
- pip install win32api报错解决方法
- 像素越高,模型越好?2.1亿 VS 3亿实战测试
- UIWebView的离线缓存
- C# 如何在PDF中绘制不同风格类型的文本
- ManyCam Enterprise(摄像头特效软件)v6.7.0.34版
- RTL8187L usb驱动编译
- mysql preparedstatement_MySQL的简单操作方法:PreparedStatement
- 总结卡方检验(Chi-square test)和费舍尔精确检验(Fisher exact test)的区别
- Android 蓝牙HOGP协议(基于ble-gatt蓝牙)连接流程分析--framework-jni-btif-bta-btm-hci -- 全网最详细(二)
- Evaluate the standards between the Top Five through ratings of transferred players on whoscored.com
- 当你觉得焦虑,烦躁的时候怎么办?
- 谷歌浏览器打印不弹出预览直接打印机打印
- 成都传智播客Java培训
- 如何在线将CAD图纸文件进行转换成黑白PNG格式?
- Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tool
- linux命令行打开写字板,linux如何在不打开文本编辑器( vi )的情况下对文件进行编辑?,真心求教...