继承关系如下
题目:
某软件有多名用户(User类),某群聊中有群主(Manager类)和多名普通成员(Member类),现群主大方给成员发红包。红包的规则:群主发一笔金额,从群主余额中扣除,红包分配方式有两种:1普通红包:平均分成n等份给成员。2随机红包:随机红包大小分配给成员。成员拿到红包后,保存到成员余额中,最后并显示每个人抢到了多少红包。
(温馨提示:本题金额可以仅考虑存储为整数的情况)
思路如下:发红包一共2种方式。
第一种:平均红包,就是用红包 / 个数,如果除不尽就把余数金额给最后一个人。
第二种:随机红包,随机产生 n 个红包,并且确定每个人最少能分到一元钱。
用户类类代码:
package week9.t5;
public class User
{
private String name;
private int money;
public User(String name, int money) {
this.name = name;
this.money = money;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public void toStr()
{
System.out.println("我叫:" + getName() + ",:余额:" + getMoney());
}
}
群主类代码:
import java.util.ArrayList;
import java.util.Random;
public class Manager extends User
{
private String type;
private int count;
public Manager(String name, int money, String type, int count) {
super(name, money);
this.type = type;
this.count = count;
}
public Manager(String name, int money, String type) {
super(name, money);
this.type = type;
}
public Manager(String name, int money){
super(name, money);
}
public ArrayList<Integer> redMoney()
{
ArrayList<Integer> listRed = new ArrayList<>();
if(type.equals("1"))
{
// 平分红包
int x = getMoney() / count;
int mod = getMoney() % count;
for (int i = 0; i < count; i++)
{
System.out.println("第" +(i + 1) + "红包是:" + x);
if(i == count - 1)
listRed.add(x + mod);
else
listRed.add(x);
}
}
else// 按概率分红包
{
int c = count;
Random r = new Random();
int x = getMoney();
for (int i = 0; i < count - 1; i++)
{
// 随机前3个红包
int y = r.nextInt(x - c + 1) + 1;
// 确保每个人最少都有一块钱
c--;
System.out.println("第" + (i + 1) + "红包是:" + y);
// 随机的每个红包添加到集合中
listRed.add(y);
// 减掉每次产生的随机红包
x -= y;
}
// 最后一个红包就是x本身
System.out.println("第" + (3 + 1) + "红包是:" + x);
listRed.add(x);
}
return listRed;
}
}
普通成员类方法:
package week9.t5;
public class User
{
private String name;
private int money;
public User(String name, int money) {
this.name = name;
this.money = money;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public void toStr()
{
System.out.println("我叫:" + getName() + ",:余额:" + getMoney());
}
}
效果如下: