群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则:
- 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。
- 成员领取红包后,保存到成员余额中。
请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。
User类
package com.itheima.demo1;
public class User {
private String username;
private double leftmoney;
public User(String username, double leftmoney) {
this.username = username;
this.leftmoney = leftmoney;
}
public User() {
}
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);
}
}
QuZhu类
package com.itheima.demo1;
import java.util.ArrayList;
//群主发红包,就是吧一个整数的金额,分层若干等分
/*
1.获取群主金额,是否能够发红包,不能则返回null,并提示,能则继续。
2.修改群主余额
3.拆分红包
如果能整除,那么就平均分
如果不能整除,那么就吧余额分给最后一份
*/
public class QuZhu extends User{
public QuZhu(String username, double leftmoney) {
super(username, leftmoney);
}
public QuZhu() {
}
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;
//无论是否整除,n-1份,都是每份的等额金额
for (int i = 0; i < count - 1; i++) {
//缩小100倍,折算成元;
list.add(m/100.0);
}
//判断是否整除
if(l==0){
//最后一份金额与之前的每份金额保持一致
list.add((m+1)/100.0);
}else {
//不能整除,最后一份的金额是之前每份金额+余数金额
list.add((m+l)/100.0);
}
return list;
}
}
Member类
package com.itheima.demo1;
import java.util.ArrayList;
import java.util.Random;
public class Member extends User {
public Member(String username, double leftmoney) {
super(username, leftmoney);
}
public Member() {
}
//打开红包,就是从集合中,随机取出一份,保存到自己的余额中。
public void openhongbao(ArrayList<Double> list) {
Random r = new Random();
int index = r.nextInt(list.size());
//移除一个金额
Double money = list.remove(index);
//直接调用父类方法,设置到余额
setLeftmoney(money);
}
}
测试类
package com.itheima.demo1;
import com.itheima.demo.MyTest;
import java.util.ArrayList;
import java.util.Scanner;
public class Test12 {
public static void main(String[] args) {
//创建一个群主对象
QuZhu qz = new QuZhu("群主", 200);
Scanner sc = new Scanner(System.in);
System.out.println("请输入金额");
int money = sc.nextInt();
System.out.println("请输入个数");
int count = sc.nextInt();
//发送红包
ArrayList<Double> sendList = qz.send(money, count);
//判断如果余额不足
if (sendList == null) {
System.out.println("余额不足");
return;
}
//创建三个成员
Member m1 = new Member();
Member m2 = new Member();
Member m3 = new Member();
m1.setUsername("cherry");
m2.setUsername("lisa");
m3.setUsername("yingtao");
//打开红包
m1.openhongbao(sendList);
m2.openhongbao(sendList);
m3.openhongbao(sendList);
//展示信息
qz.show();
m1.show();
m2.show();
m3.show();
}
}