本文主要是介绍群发红包 java如何实现,使用Java基于ArrayList实现一个群主发红包功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用Java基于ArrayList实现一个群主发红包功能
发布时间:2020-10-30 15:07:11
来源:亿速云
阅读:108
作者:Leah
使用Java基于ArrayList实现一个群主发红包功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
建立一个用户类,用户类的属性可以有用户名,金额或者钱包,如下:
package day05_after03;
/**
* 定义成员类
*
* @author liuwenlong
* @create 2020-07-14 18:08:25
*/
@SuppressWarnings("all")
public class Human {
private String name;
private int age;
private int wallet;
public Human() {
}
public int getWallet() {
return wallet;
}
public void setWallet(int wallet) {
this.wallet = wallet;
}
public Human(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String showInfo() {
return getName() + ", 余额:" + getWallet();
}
}
然后定义一个管理员类,管理员实现发红包的过程,可以通过以下方法
/**
* 群主发红包
*
* @param amount int 红包大小
* @param count int 红包个数
* @return 返回拆分好的红包数组
*/
public ArrayList hangOut(int amount, int count) {
ArrayList RedPackage = new ArrayList<>();//创建一个数列,存放N份红包
if (!(this.getWallet() < amount)) {
int whole = amount / count;//整的钱
int surplus = amount % count;//余下的钱
for (int i = 0; i < count - 1; i++) {
RedPackage.add(whole);
}
RedPackage.add((whole + surplus));//余下的加到最后一个上面
int getMoney = getWallet();
setWallet(getMoney - amount);//修改群主的钱包
} else {
System.out.println("余额不足!");
return null;
}
return RedPackage;
}
whole是要发的金额整除要发的份数,如果有余下的钱则存放到surplus中,使用循环将钱放到可变长数组里,并且将最后一个和余数相加,最后返回该可变长数组。
接下来就是群成员进行拆分红包,核心代码如下:
/**
* 群成员拆红包
*
* @param redPack 群主打包好的红包数组,随机抽取一个
*/
public void receive(ArrayList redPack) {
int index = (int) (Math.random() * redPack.size());//从0到当前值取随机数,当前值递减
int numberRedPack = redPack.get(index);//根据下标获取金额
int selfAcount = getWallet();//获取自己之前的金额
setWallet((selfAcount + numberRedPack));//重新设置钱包
redPack.remove(index);//将红包数组内的这个红包删除,个数减少
}
使用可变长数组ArrayList的好处就是可以不用考虑数组越界的问题。
最后定义一个测试类,实例化出管理员和三个群成员,
/**
* 群主发红包
*
* @author liuwenlong
* @create 2020-07-14 18:35:04
*/
@SuppressWarnings("all")
public class TestRedPack {
public static void main(String[] args) {
ArrayList red = new ArrayList<>();
Manage manage = new Manage("管理员", 20, 100);
Member m1 = new Member("张三", 18, 0);
Member m2 = new Member("李四", 17, 0);
Member m3 = new Member("王五", 16, 0);
System.out.println(manage.showInfo());
System.out.println(m1.showInfo());
System.out.println(m2.showInfo());
System.out.println(m3.showInfo());
System.out.println("=====================================================");
red = manage.hangOut(20, 3);//群主发红包
m1.receive(red);
m2.receive(red);
m3.receive(red);
System.out.println(manage.showInfo());
System.out.println(m1.showInfo());
System.out.println(m2.showInfo());
System.out.println(m3.showInfo());
}
}
最后将群主拆分好的红包返回到可变长数组red中,然后以此传给每个群成员。最终运行结果如下:
关于使用Java基于ArrayList实现一个群主发红包功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
这篇关于群发红包 java如何实现,使用Java基于ArrayList实现一个群主发红包功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!