【Java学习笔记】模拟微信拼手气红包的案例
参考百度文库:微信红包随机金额生成算法模拟及应用中关于微信拼手气红包随机算法的叙述。
Java SE已经粗略的学习了一遍,我对其中的微信红包模拟颇感兴趣,今天花时间实现了均等金额的普通红包及随机金额的拼手气红包,明天继续围绕红包案例,讨论两种常见的玩法。
我编写了一个User类,这个类中含有2个私有字段,其中用分表示钱的数量:
private String name;
//用分来表示钱,避免使用浮点类型表示
private int moneyCountByCents;
这个类中含有一个私有方法,用于将用分表示的钱转换为用元表示:
//用于返回字符串类型的,用元表示的钱数,一直精确2位小数的私有方法
private String turnYuan(int moneyCountByCents) {
String str = new String();
str += (moneyCountByCents/100);
str += ".";
str += (moneyCountByCents%100/10);
str += (moneyCountByCents%10);
return str;
}
设定User类的对象,既能发红包,也能抢红包。其中红包类型又分为普通红包与拼手气红包。
首先是发普通红包的方法:
//用于发普通红包的方法
public ArrayList<Integer> sendUsualRedPacket(int num,int moneyCountByCents) {
ArrayList<Integer> redPacket = new ArrayList<>();
//一个判断,如果User要发的红包总金额大于自己剩余的钱,那么就把红包总金额赋值为自己剩余的钱
//如果User要发的红包总金额大于自己剩余的钱,那么就把红包总金额赋值为自己剩余的钱
//如果User要发的红包总金额大于自己剩余的钱,那么就把红包总金额赋值为自己剩余的钱
if (this.moneyCountByCents >= moneyCountByCents) {
this.moneyCountByCents -= moneyCountByCents;
}else if (this.moneyCountByCents < num){
System.out.println(this.name + "现在只有"
+ turnYuan(this.moneyCountByCents)
+ "元钱,已经没法给在座的各位发红包了。");