继承综合案例
群主发普通红包。
某群有多名成员,群主给成员发普通红包。普通红包的规则:
1.群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。
2.成员领取红包后,保存到成员余额中。
请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。
案例分析
案例代码
//定义父类
package honbao;
public class User{
private String username;//姓名
private double leftMoney;//余额
public User(){}
public User(String username,double leftMoney){
this.username=username;
this.leftMoney=leftMoney;}
//get/set方法
public String getUsername(){
return username;
}
public void setUsername(String user name){
this.username=username;
}
public double getLeftMoney(){
return leftMoney;
}
public void setLeftMoney(double leftMoney){
this.leftMoney=leftMoney;
}
//展示信息的方法
public void show(){
System.out.println("用户名:"+username+",余额为:"+leftMoney+"元");
}
}
}
//定义群主类
package honbao;
import java.util.ArrayList;
public class QunZhu extends User {
//定义群主的构造方法
public QunZhu(){}
//继承父类的构造方法
public QunZhu(String username,double leftMoney){
super(username,leftMoney);
}
public ArrayList<Double> send(double money, int count){
ArrayList<Double> list =new ArrayList<>();
double leftMoney=super.getLeftMoney();
if(money>leftMoney){
System.out.println("余额不足!");
return null;
}
//如果发的钱能除尽;就平分;不能除尽,余下的钱给第一个抢到的;
leftMoney-=money;
super.setLeftMoney(leftMoney);
int avg=(int)money/count;
double avg1=avg;
int mod=(int)money%count;
double mod1=mod;
for (int i = 0; i < count-1; i++) {
list.add(avg1);
}
if(mod!=0){
list.add(avg1+mod);
}
else list.add(avg1);
System.out.println("红包发送成功!");
return list;
}
}
//定义群员类
package honbao;
import java.util.ArrayList;
public class Member extends User{
//定义群员的构造方法
public Member(){}
//继承父类的构造方法
public Member(String username,double leftMoney){
super(username,leftMoney);
}
public void recieve(ArrayList<Double> list){
double leftMoney=super.getLeftMoney();
int len=list.size();
if(len<1){
double honbao=0;
System.out.println("手慢了,下次快点吧!"); }
else {
double honbao=list.remove(len-1);
leftMoney=super.getLeftMoney()+honbao;
super.setLeftMoney(leftMoney);
System.out.println("已经抢到红包,金额为:"+honbao+"元");}
}
}
//定义执行函数
package honbao;
import java.util.ArrayList;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//定义一个群主
QunZhu qz=new QunZhu("群主",200);
Scanner sc =new Scanner(System.in);
qz.show();
System.out.println("请输入要发的红包金额:");
double money=sc.nextDouble();
System.out.println("请输出要发的红包个数:");
int count=sc.nextInt();
ArrayList<Double> list=qz.send(money,count);
qz.show();
//定义四个群员,等会假设分为三份,同时测试抢不到的情况
Member m1=new Member("群员1",10);
Member m2=new Member("群员2",10);
Member m3=new Member("群员3",10);
Member m4=new Member("群员4",10);
m1.show();
m2.show();
m3.show();
m4.show();
//分别抢红包
System.out.println("群员1:");
m1.recieve(list);
System.out.println("群员2:");
m2.recieve(list);
System.out.println("群员3:");
m3.recieve(list);
System.out.println("群员4:");
m4.recieve(list);
//在分别show一下
qz.show();
m1.show();
m2.show();
m3.show();
m4.show();
}
}
Comments NOTHING