码迷,mamicode.com
首页 > 其他好文 > 详细

抢红包

时间:2020-07-07 18:08:28      阅读:39      评论:0      收藏:0      [点我收藏+]

标签:integer   new   str   out   完成   this   整数   else   size   

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

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();
}
}





抢红包

标签:integer   new   str   out   完成   this   整数   else   size   

原文地址:https://www.cnblogs.com/lifengSkt/p/13261958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!