抢红包

Posted lifengskt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抢红包相关的知识,希望对你有一定的参考价值。

群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则:

1. 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。

2. 成员领取红包后,保存到成员余额中。

/**
* 用户类
*/
public class User {
private String username;
private double leftMoney;

public User() {
}

public User(String username, Integer leftMoney) {
this.username = username;
this.leftMoney = leftMoney;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public Double getLeftMoney() {
return leftMoney;
}

public void setLeftMoney(Double leftMoney) {
this.leftMoney = leftMoney;
}

public void show(){
System.out.println("用户名:"+username+" 余额为:"+leftMoney);
}
}


/**
* 群主类,发红包的人
*/
public class Qunzhu extends User{
public Qunzhu() {
}

public Qunzhu(String username, Integer leftMoney) {
super(username, leftMoney);
}
/*      群主发红包,就是把一个整数的金额,分层若干等份。
          1.获取群主余额,是否够发红包.
          不能则返回null,并提示. 
            能则继续. 
            2.修改群主余额. 
        3.拆分红包.
          3.1.如果能整除,那么就平均分。
          3.2.如果不能整除,那么就把余数分给最后一份。
          */
public ArrayList<Double> send(int money,int count){
Double leftMoney = getLeftMoney();
if (money>leftMoney){
return null;
}
setLeftMoney(leftMoney-money);
ArrayList<Double> list= new ArrayList<>();
money=money*100;
// 每份的金额
int m = money/count;
//不能整除的余数
int l=money%count;
//无论是否整除,n‐1份,都是每份的等额金额
for (int i = 0; i <count-1 ; i++) {
list.add(m/100.0);
}
//能整除,最后一份也是m
if(l==0){
list.add(m/100.0);
}else{//不能整除,最后一份等于m+l
list.add(m/100.0+l);
}
return list;
}
}

/**
* 成员类,抢红包的人
*/
public class Member extends User {
public Member() {
}

public Member(String username, Integer leftMoney) {
super(username, leftMoney);
}

//抢红包方法
public void OpenHongbao(ArrayList<Double> list){
Random r = new Random();
int i = r.nextInt(list.size());
Double money = list.get(i);
list.remove(i);
setLeftMoney(getLeftMoney()+money);
}
}
测试类

/**
* 群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则:
1. 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。
2. 成员领取红包后,保存到成员余额中。
请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作
*/
public class ExtendsTest02 {
public static void main(String[] args) {
Qunzhu qz = new Qunzhu("群主", 500);
Scanner in = new Scanner(System.in);
System.out.println("输入红包总金额:");
int money = in.nextInt();
System.out.println("输入红包个数:");
int conut = in.nextInt();
//发红包
ArrayList<Double> list = qz.send(money, conut);
if (list==null){
System.out.println("余额不足!");
return;
}
Member m1 = new Member("成员1",100);
Member m2 = new Member("成员2",100);
Member m3 = new Member("成员3",100);
m1.OpenHongbao(list);
m2.OpenHongbao(list);
m3.OpenHongbao(list);
qz.show();
m1.show();
m2.show();
m3.show();
}
}





以上是关于抢红包的主要内容,如果未能解决你的问题,请参考以下文章

抢红包代码留存

L2-009. 抢红包 结构体排序

如何用python编一个抢红包脚本?

Android中微信抢红包助手的实现(代码整理)

微信群抢红包神器自动抢最佳,微信群里面抢红包怎么抢到最佳?

微信抢红包神器怎么用,微信抢红包神器图文使用方法