JAVA写的伪微信红包功能

  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,把分配出来的人和钱顺序打乱

  MapmoneyMap = 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 + 元!);

  }

  }

  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值