分析

 用户类

public class User {
private String username; //定义用户变量
private int money; //定于余额

public User() {
}

public User(String username, int money) {
this.username = username;
this.money = money;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public int getMoney() {
return money;
}

public void setMoney(int money) {
this.money = money;
}

//创建show方法用来展示用户信息和余额
public void show() {
System.out.println(" " + username + " 我的余额:" + money);
}
public void show2(){
System.out.print(" " + username + " 红包金额:" + money);
System.out.println(" 我的余额"+money);
}
public void show1() {
System.out.println(" " + username + " 剩余金额:" + money);
}

}

 群主类

import java.util.ArrayList;

public class QunZhu extends User {
//无参构造
public QunZhu() {

}

//有参构造
public QunZhu(String username, int money) {
super(username, money); //通过子类调用父类的构造方法
}

//发红包的自定义方法
//分析 ;返回值 发红包的各个红包金额 Arraylist<Inter>
// 方法名称 发红包s end
// 参数列表 红包大小,份数 int leftmoney, int count
public ArrayList<Integer> send(int leftmoney, int count) {
//定义一个变量用来存储群主的余额
int money = super.getMoney();
//判断发红包的金额是否小于余额
if (leftmoney > money) {
System.out.println("余额不足");
return null;
}
//如果红包金额小于,就发红包来扣钱,重新设置余额
setMoney(money - leftmoney);
//定义一个集合,用来存储若干个红包的金额
ArrayList<Integer> arrayList = new ArrayList<Integer>();
//设定每份红包的金额
int jiner = leftmoney / count;
//如果红包分的不平均,取模取余
int yushu = leftmoney % count;
//循环遍历,将每份红包金额放到对数组对象中
for (int i = 0; i < count - 1; i++) {
//将金额添加到数组对象的元素中
arrayList.add(jiner);
}
//将最后一个红包
int last = jiner + yushu;
//将最后一个红包添加到数组对象中
arrayList.add(last);
//返回值 集合
return arrayList;
}

}

 群员类

import java.util.ArrayList;
import java.util.Random;

public class QunYuan extends User {
//无参构造
public QunYuan() {
}

//有参构造
public QunYuan(String username, int money) {
super(username, money); //调用父类的构造方法
}

//创建收红包或者打开红包的方法;
// 返回值 没有返回值 用void
// 方法名称 收红包或者打开红包的方法OpenHongBao
// 参数列表 Arraylist<Inter> -----arraylist
public void OpenHongBao(ArrayList<Integer> arrayList) {
// 从多个红包当中随便抽取一个,给我自己。
// 随机获取一个集合当中的索引编号
//创建随机数对象index
Random random = new Random();
int index = random.nextInt(arrayList.size());
//将红包金额给到自己
int delta = arrayList.remove(index);
//计算现有余额
int money = super.getMoney();
//将获得红包金额加到本来的余额里
super.setMoney(money + delta);
}

}

 测试类

import java.util.ArrayList;
import java.util.Scanner;

public class DemoTest {
public static void main(String[] args) {
//创建群主对象
QunZhu qunZhu1 = new QunZhu("群主", 800);
//创建群员对象
QunYuan qunYuan1 = new QunYuan("小明", 0);
QunYuan qunYuan2 = new QunYuan("小黄", 0);
QunYuan qunYuan3 = new QunYuan("小里", 0);
QunYuan qunYuan4 = new QunYuan("小三", 0);
QunYuan qunYuan5 = new QunYuan("小蓝", 0);
QunYuan qunYuan6 = new QunYuan("小紫", 0);
QunYuan qunYuan7 = new QunYuan("小黑", 0);
System.out.println("=================");
qunZhu1.show();
System.out.println("=================");
qunYuan1.show();
qunYuan2.show();
qunYuan3.show();
qunYuan4.show();
qunYuan5.show();
qunYuan6.show();
qunYuan7.show();
System.out.println("===============");
//键盘输入
System.out.println(qunZhu1.getUsername() + " 发红包了");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入红包金额:");
int money = scanner.nextInt();
System.out.println("请输入红包个数:");
int count = scanner.nextInt();
if (count < 7) {
System.out.println("输入错误");
return;
}
//创建新的集合用来发红包
ArrayList<Integer> redlist = qunZhu1.send(money, count);
//群员打开红包
System.out.println("=================");
System.out.println("====红包抢完了====");
qunYuan1.OpenHongBao(redlist);
qunYuan2.OpenHongBao(redlist);
qunYuan3.OpenHongBao(redlist);
qunYuan4.OpenHongBao(redlist);
qunYuan5.OpenHongBao(redlist);
qunYuan6.OpenHongBao(redlist);
qunYuan7.OpenHongBao(redlist);
//展示金额
System.out.println("=================");
qunZhu1.show1();
System.out.println("=================");
qunYuan1.show2();
qunYuan2.show2();
qunYuan3.show2();
qunYuan4.show2();
qunYuan5.show2();
qunYuan6.show2();
qunYuan7.show2();
System.out.println("=================");
}
}