1、创建User类
package com.yueqian.day09_1.demo12;
/**
* 父类
* @author FPF
*
*/
public class User {
//添加成员变量
private String username;//账户名
private double leftMoney;//余额
//添加构造方法
public User() {
super();
}
public User(String username, double leftMoney) {
super();
this.username = username;
this.leftMoney = leftMoney;
}
//添加set../get..
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+"元");
}
}
2、创建群主类并继承user类
package com.yueqian.day09_1.demo12;
import java.util.ArrayList;
/**
* 群主子类
*
* @author FPF
*
*/
public class QunZhu extends User{
// 添加构造方法
public QunZhu() {
super();
}
public QunZhu(String username,double leftMoney) {
//调用父类构造进行传参
super(username, leftMoney);
}
/*
群主发红包,就是把一个整数的金额,分成若干等份。
1.获取群主余额,是否够发红包.
不能则返回null,并提示.
能则继续.
2.修改群主余额.
3.拆分红包.
3.1.如果能整除,那么就平均分。
3.2.如果不能整除,那么就把余数分给最后一份。
@param
ArrayList<Double>:存储每一个红包;
double money:发送红包的总金额
int count:红包的个数
*/
public ArrayList<Double> send(int money, int count) {//200.5 10
//1、获取群主的账户余额
double leftMoney = getLeftMoney();
//2、判断账户余额是否够发红包
if(leftMoney<money) {
return null;
}
//3、修改群主的账户余额(原余额-红包总金额)
setLeftMoney(leftMoney-money);
//4、拆分红包
//4.1 创建一个集合存放每一个红包
ArrayList<Double> list = new ArrayList<Double>();
//4.2 扩大100倍,相当于折算成'分'为单位,避免小数运算损失精度的问题
money = money*100;
//4.3 每份的金额
double m = money/count;
//4.4 不能整除的余数
double l = money%count;
//4.5 将除了最后一个红包以外的红包存放如集合(最后一个红包比较特殊)
for (int i = 0; i <count-1; i++) {
list.add(m/100);
}
//4.6 将最后一个红包存入集合
list.add((m+l)/100);
return list;
}
}
3、创建群员类并继承User类
package com.yueqian.day09_1.demo12;
import java.util.ArrayList;
import java.util.Random;
/**
* 普通群员
* @author FPF
*
*/
public class Member extends User{
//添加构造方法
public Member() {
super();
}
public Member(String username,double leftMoney) {
//访问父类的构造进行传参
super(username, leftMoney);
}
/**
* 打开红包,就是从集合中,随机取出一份,保存到自己的余额中
* @param list:存放每一个红包
*/
public void openHongbao(ArrayList<Double> list) {
//随机一个index
int index = new Random().nextInt(list.size());
//根据index从集合中移除一个红包
Double hongbao = list.remove(index);
//将红包金额存入账户余额
setLeftMoney(getLeftMoney()+hongbao);
}
}
4、测试类
package com.yueqian.day09_1.demo12;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
//创建群主
QunZhu zhu = new QunZhu("群主", 2000);
//创建群员
Member zx = new Member("张三", 200);
Member zx1 = new Member("李四", 20);
Member zx2 = new Member("王五", 1500);
//群主发红包
System.out.println("群主发红包了!");
ArrayList<Double> hongbao = zhu.send(10, 3);
System.out.println("大家开始抢红包!");
//群员开始抢红包
zx.openHongbao(hongbao);
zx1.openHongbao(hongbao);
zx2.openHongbao(hongbao);
System.out.println("显示账户余额:");
//显示最新账户信息
zhu.show();
zx.show();
zx1.show();
zx2.show();
}
}
案例虽小,记录平常所学的点点滴滴。记的点赞加关注oo
写在最后
推荐自己的Github地址:github.com/Lmobject