发红包涉及两个对象
群主和成员,他们都有姓名 余额 等属性,简单起见就用这俩。抽象出来有一个类User
public abstract class User {
private string name;
private int money;
//构造函数用来生成具体的name money,在子类的构造函数调用super.User()创建具体对象的name,money
public User(){}//无参数构造 alt+shift+s ,然后再按一下“c”。
public User (string name int money){
//有参数构造,在编译器中有快捷键“alt+shift+s”,然后再按一下“o”。
this.name=name;
this.moey =money;
}
//“alt+shift+s”,然后再按一下“r”。来设置get,set 方法。
}
群主类
拥有类的一般方法和send方法。方法三要素返回值,方法名,传参。
他要发红包需要两个参数红包钱数和数量,返回值类型应该返回一个红包集合,每个红包多少钱ArrayList存放集合相关
public class Manger extends User {
//使用user类的构造方法
public Manger ( string name int money){
super(name,money);
}
public Manger (){}
//写方法
public ArrayList<Interger> send (int TotalMoney,int count){
//定义集合放红包
ArrayList <Interger> list= new ArrayList();
//先判断是否有钱发红包
if(TotalMoney>super.getmoney){
print("钱不够")
return list;
}
//钱够时分红包,发完记得减去红包的钱数
int hongbao =TotalMoney/ count;
//除不尽时把余数加到最后一个。
int last =TotalMoney%count+hongbao;
suoer.setMoney(money-TotalMoney)
//存入集合
for(int i=0;i<count-1;i++){ //先放前几个,最后一个单独放
list.add(hongbao);
}
list.add(last);
}
return list;
}
成员类
类似群主,只是有一个收红包的方法。参数:红包列表。返回值:int 名字:receive()
public class number extends User{
//构造函数
public number(){}
public number(string name,int miney){
super(name,money);
}
public void receive(ArrayList<Interger> list){ //如何传入集合??调用群主的send返回值是一个集合,将其赋值到一个变量传入。
//从集合随机抽红包
int index = new radom().nextInt(list.size);
//红包减去一份
list.remove(index);
super.setMoney(super.getmoney+list[index]);//成员加钱
}
}
main函数
Manger manger =new Manger("老李",300);
number num1 =new num("成员1",0);
number num2 =new num("成员2",0);
number num3 =new num("成员3",0);
ArrayList<Interger> list =manger.send(100,3); //发钱
num.receive(list);//收钱