抢红包案例
作者:互联网
综合案例:群主发普通红包
群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则:
1.群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取
2.成员领取红包后,保存到成员的余额中
请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。
用户类:姓名,余额
群主类:发送红包的方法 extends 用户类
普通成员另类:收红包的方法 extends 用户类
发红包的逻辑,三要素:
返回值类型:ArrayList
方法名称: send
参数列表: 1.总共发红包金额 int totalMonry 2.分成多少分 int count
public ArrayList
收红包的逻辑,三要素
返回值类型:void
方法名称:receive
参数列表:ArrayList
public void receive(ArrayList
package com.yang.exercises;
import java.util.ArrayList;
import java.util.Random;
public class Test {
public static void main(String[] args) {
Manage manage = new Manage("群主",200);
Member member = new Member("群员1",0);
Member member2 = new Member("群员2",0);
Member member3 = new Member("群员3",0);
manage.show();
member.show();
member2.show();
member3.show();
System.out.println("-----------------------");
ArrayList<Double> doubles = manage.send(99.99,3);
member.receive(doubles);
member2.receive(doubles);
member3.receive(doubles);
manage.show();
member.show();
member2.show();
member3.show();
}
}
class User{
private String name;//姓名
private double money;//余额 当前拥有的钱的数量
public User() {
}
public User(String name, double money) {
this.name = name;
this.money = money;
}
//展示当前用户的余额
public void show(){
System.out.println("名称:"+name +" " + "余额:" + money );
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", money=" + money +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
}
class Manage extends User{
public Manage() {
}
public Manage(String name, double money) {
super(name, money);
}
public ArrayList<Double> send(double totalMoney,double count){
//编写集合来存储若干个红包的金额
ArrayList<Double> list = new ArrayList<>();
//首先看一下群主有多少钱
double leftMoney = super.getMoney();
if (leftMoney < totalMoney){
System.out.println("余额不足");
return list;//返回一个空集合
}
//扣钱 重新设置新余额
super.setMoney(leftMoney - totalMoney);
//发送红包平均分为count份
double avg = leftMoney / count;
double mod = totalMoney % count;
for (int i = 0; i < count -1 ; i++) {
list.add(avg);
}
//最后一个红包
double last = mod + avg;
list.add(last);
return list;
}
}
class Member extends User{
public Member() {
}
public Member(String name, double money) {
super(name, money);
}
public void receive(ArrayList<Double> list){
//从多个红包当中抽取一个给我自己
//随机获取一个集合中的索引作为编号
int index = new Random().nextInt(list.size());
//根据索引从集合中删除 并且得到被删除的给我自己
Double delta = list.remove(index);
//当前成员的原本金额
double money = super.getMoney();
super.setMoney(delta + money);
}
}
标签:红包,name,double,抢红包,案例,ArrayList,money,public 来源: https://www.cnblogs.com/ailhy/p/16434415.html