红包发放:

涉及继承:

一共三个类:

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)之红包分配方法相关推荐

  1. 利用java反射调用类的的私有方法

    http://blog.csdn.net/sunyujia/article/details/2501709 今天和一位朋友谈到父类私有方法的调用问题,本来以为利用反射很轻松就可以实现,因为在反射看来根 ...

  2. 利用java反射调用类的的私有方法--转

    原文:http://blog.csdn.net/woshinia/article/details/11766567 1,今天和一位朋友谈到父类私有方法的调用问题,本来以为利用反射很轻松就可以实现,因为 ...

  3. 利用Java反射机制调用类的私有方法

    利用Java反射机制调用类的私有方法 引言 来吧·展示 参考链接 引言 如何调用其他类的私有方法呢? 可以利用Java的反射机制,去调用其他类的私有方法 来吧·展示 package cn.learn. ...

  4. 重复最多字符次数java_利用Java实现求字符串中出现次数最多的字符及次数

    利用Java实现求字符串中出现次数最多的字符及次数 发布时间:2020-11-12 16:57:24 来源:亿速云 阅读:108 作者:Leah 这篇文章将为大家详细讲解有关利用Java实现求字符串中 ...

  5. 天天酷跑java_利用Java怎么实现一个天天酷跑游戏

    利用Java怎么实现一个天天酷跑游戏 发布时间:2020-12-15 17:25:03 来源:亿速云 阅读:102 作者:Leah 利用Java怎么实现一个天天酷跑游戏?很多新手对此不是很清楚,为了帮 ...

  6. java编写字符串连接程序注释_一种利用JAVA注释支持多行字符串的方法

    从BeetlSql项目将SQL全放在Beetl模板里得到启发,又想到一个比较偏门的用法.以下代码实测通过,详见jSqlBox项目的test\examples\multipleLineSQL\SqlTe ...

  7. excel转换pdf java_用Java把Excel转换成PDF的方法

    用Java把Excel转换成PDF的方法 发布时间:2020-05-30 11:48:45 来源:亿速云 阅读:216 作者:鸽子 Java 将Excel转为PDF 本文将介绍在Java程序中如何将E ...

  8. 群发功能java_利用java实现邮箱群发功能

    本文实例为大家分享了java实现邮箱群发的具体代码,供大家参考,具体内容如下 近来无事,在网上看了一些大牛文章,其中看到一篇比较好的,分享给大家! 下面是代码 邮箱实体 import java.io. ...

  9. 上网监控程序java_利用java实现一个简单的远程监控程序

    一般的远程监控软件都是用c或者c++等语言开发的,而使用java如何来实现相同的功能呢. 首先我们先介绍一下一个简单的远程监控程序的实现原理. 功能一,远程屏幕监视 (1) 必须要有监控端与被监控端, ...

最新文章

  1. cleanmymac能够很方便的清理mac上面没用的软件,尤其是这个清理大文件的功能
  2. 小学计算机几年级学3d建模,学了4年手绘和建模,你终于不会思考了
  3. Django REST framework 开始
  4. jQuery_基本选择器
  5. pip install win32api报错解决方法
  6. 像素越高,模型越好?2.1亿 VS 3亿实战测试
  7. UIWebView的离线缓存
  8. C# 如何在PDF中绘制不同风格类型的文本
  9. ManyCam Enterprise(摄像头特效软件)v6.7.0.34版
  10. RTL8187L usb驱动编译
  11. mysql preparedstatement_MySQL的简单操作方法:PreparedStatement
  12. 总结卡方检验(Chi-square test)和费舍尔精确检验(Fisher exact test)的区别
  13. Android 蓝牙HOGP协议(基于ble-gatt蓝牙)连接流程分析--framework-jni-btif-bta-btm-hci -- 全网最详细(二)
  14. Evaluate the standards between the Top Five through ratings of transferred players on whoscored.com
  15. 当你觉得焦虑,烦躁的时候怎么办?
  16. 谷歌浏览器打印不弹出预览直接打印机打印
  17. 成都传智播客Java培训
  18. 如何在线将CAD图纸文件进行转换成黑白PNG格式?
  19. Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tool
  20. linux命令行打开写字板,linux如何在不打开文本编辑器( vi )的情况下对文件进行编辑?,真心求教...

热门文章

  1. 推荐一款风格融合软件——Ostagram
  2. 浅谈Servlet与JSP
  3. WordPress安装详细教程(小白教程)
  4. VMware workstation Pro 15注册码
  5. linux及林纳斯-托沃兹
  6. GDKOI2014「壕壕的寒假作业」
  7. linux基础命令 - ps
  8. Linux设备驱动-platform虚拟总线dya01
  9. Yeoman学习-yo篇
  10. 计算机的发展经历起源与未来,计算机起源与发展历程.ppt