抢红包
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();
}
}
以上是关于抢红包的主要内容,如果未能解决你的问题,请参考以下文章