群主发红包
群主发红包,某群友多个成员,群主给成员发红包,普通红包的规则:
1、群主的一笔钱,从群主的余额总扣除,平均分成n份,让成员领取
2、成员领取钱,保存自己的余额中
用户的实体类:
public class User {
//成员变量
private String username;//用户名
private double leftMoney;//余额
//无参构造
public User(){}
//有参构造
public User(String username,double leftMoney){
this.username=username;
this.leftMoney=leftMoney;
}
// 展示信息的方法
public void show(){
System.out.println("用户姓名"+username+"余额"+leftMoney);
}
//get 和set方法
public String getUsername() {
return username;
}
public double getLeftMoney() {
return leftMoney;
}
public void setLeftMoney(double leftMoney) {
this.leftMoney = leftMoney;
}
public void setUsername(String username) {
this.username = username;
}
}
定义群主类:
import java.util.ArrayList;
public class QunZhu extends User {
public QunZhu(){
}
public QunZhu(String username,double leftMoney){
super(username,leftMoney);
}
/*
* 群主发红包:
* 1、获取群主的余额,是否够发红包
* 不够的返回一个null
* 2、修改群主的余额
* 拆红包
* 1、如果能整除,那个就平均分
* 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<>();
//扩大100倍,为了避免小数运算损失精度的问题
money=money*100;
//每份的金额
int m=money/count;
//除出来的余额
int l=money%count;
for (int i = 0; i <count-1 ; i++) {
//缩小100倍
list.add(m/100.00);
}
if (l==0){
list.add(m/100.00);
}else {
list.add((m+1)/100.00);
}
return list;
}
}
成员的类:
import java.util.ArrayList;
import java.util.Random;
public class Member extends User{
public Member(){
}
public Member(String username,double leftMoney){
super(username,leftMoney);
}
public void open(ArrayList<Double> list){
Random random=new Random();
int index=random.nextInt(list.size());
Double remove = list.remove(index);
setLeftMoney(remove);
}
}
import java.util.ArrayList;
import java.util.Scanner;
public class test04 {
public static void main(String[] args) {
QunZhu qunZhu=new QunZhu("群主",200);
//键盘录入
Scanner scanner=new Scanner(System.in);
System.out.println("请输入金额:");
int money=scanner.nextInt();
System.out.println("请输入个数:");
int count = scanner.nextInt();
//发红包
ArrayList<Double> send=qunZhu.send(money,count);
if (send==null){
System.out.println("余额不足。。。改天再发吧");
return;
}
Member member=new Member("小白",0);
Member member1=new Member("小红",0);
Member member2=new Member("小黑",0);
member.open(send);
member1.open(send);
member2.open(send);
qunZhu.show();
member.show();
member1.show();
member2.show();
}
}