分为4个模块,test主函数,User为抽象类,QunZhu为群主类,有发红包的方法;Member为成员类,有拿红包的方法。
public class Test {
public static void main(String[] args){
QunZhu qz= new QunZhu("群主",600);
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 m = new Member();
Member m2 = new Member();
Member m3 = new Member();
Member m4 = new Member();
m.openHongbao(sendList);
m2.openHongbao(sendList);
m3.openHongbao(sendList);
m4.openHongbao(sendList);
qz.show();
m.show();
m2.show();
m3.show();
m4.show();
}
}
public class QunZhu extends User{
public QunZhu(){}
public QunZhu(String username,double leftMoney){
super(username,leftMoney);
}
public ArrayList<Double> send(int money,int count){
double leftmoney = getLeftMoney();
if(money > leftmoney)
return null;
setLeftMoney(leftmoney - money);
money *= 100;
int mount = money / count;
int r = money % count;
int rest = money % mount;
ArrayList<Double> list = new ArrayList<>();
for (int i = 0; i < count - 1; i++) {
list.add(mount/100.0);
}
if(r == 0)
list.add(mount/100.0);
else{
list.add(mount / 100.0 + rest);
}
System.out.println("红包内部情况"+list);
return list;
}
}
public class Member extends User{
public Member(){}
public Member(String username,double leftMoney){
super(username,leftMoney);
}
public void openHongbao(ArrayList<Double> list){
int index = new Random().nextInt(list.size());
// double money = super.getLeftMoney();
// setLeftMoney(money + list.get(index));
// list.remove(index);
double money = list.remove(index);
double rest = super.getLeftMoney();
super.setLeftMoney(money+rest);
}
}
public class User {
private String username;
private double leftMoney;
public User(){}
public User(String username,double leftMoney){
this.username = username;
this.leftMoney = leftMoney;
}
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+"元");
}
}
样例:
请输入金额
523
请输入个数
6
红包内部情况[87.16, 87.16, 87.16, 87.16, 87.16, 87.16]
用户名群主,余额为:77.0元
用户名null,余额为:87.16元
用户名null,余额为:87.16元
用户名null,余额为:87.16元
用户名null,余额为:87.16元