Java红包案例,Java学习

Java红包案例:

 

群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则:
1. 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。
2. 成员领取红包后,保存到成员余额中。

 

该案例包含了Java Bean标准类,继承,super,静态与非静态,方法的调用返回值和参数传递,ArrayList集合作为返回值和参数列表,Random随机数等知识,

很好的复习了之前学过的知识,考验巩固初学者的基本功。

创建的部分名称与图片不同

 

1. 创建用户父类

 1 public class User {
 2     private String name;
 3     private int money;
 4     
 5     public User() {
 6     }
 7     
 8     public User(String name, int money) {
 9     this.name = name;
10     this.money = money;
11     }
12     
13     //静态方法可以访问非静态成员变量name和money,显示初始金额
14     public void show() {
15     System.out.println("姓名:" + name + ",余额:" + money);
16     }
17     
18     public void setName(String name) {
19     this.name = name;
20     }
21     public String getName() {
22     return name;
23     }
24     
25     public void setMoney(int money) {
26     this.money = money;
27     }
28     public int getMoney() {
29     return money;
30     }
31 }

 

2. 创建群主(发红包人员)子类

 1 import java.util.ArrayList;
 2 public class Manager extends User {
 3     public Manager() {
 4     }
 5     
 6     public Manager(String name, int money) {
 7     super(name, money);
 8     }
 9 
10     //sendMoney发的总金额, fen份数,ArrayList<Integer>类型的集合作为返回值
11     public ArrayList<Integer> send(int sendMoney, int fen) {
12     
13     //ArrayList<Integer> redList每份红包组成的集合
14     ArrayList<Integer> redList = new ArrayList<Integer>();
15 
16     int showMoney = super.getMoney();//初始的金额
17     
18     if (sendMoney > showMoney) {
19         System.out.println("余额不足");
20         return redList;
21         }
22     int fenMoney = sendMoney / fen;//平均分成的整数金额
23     int modMoney = sendMoney % fen;//平分后剩余的余数金额
24 
25     for (int i = 0; i < fen - 1; i++) {
26         redList.add(fenMoney);//平均分成的整数金额添加到集合
27         }
28     int lastMoney = fenMoney + modMoney;//最后一个红包 = 平均分成的整数金额+余数金额
29     redList.add(lastMoney);
30     System.out.println(redList);
31     super.setMoney(showMoney - sendMoney);//发红包后更新发红包人手上的金额
32     return redList;//返回红包集合
33     }
34 }

 

3. 创建群成员子类

 1 import java.util.ArrayList;
 2 import java.util.Random;
 3 public class Member extends User {
 4     public Member() {
 5     }
 6 
 7     public Member(String name, int money) {
 8     super(name, money);
 9     }
10     
11     //ArrayList<Integer>类型的集合作为参数列表,用来接收一个list集合
12     public void receive(ArrayList<Integer> list) {
13 
14     Random ran = new Random();
15     int suijiNum = ran.nextInt(list.size());//list集合长度作为Radom随机数长度
16     int receivePackMoney = list.remove(suijiNum);//list集合里删除一个索引值对应的元素作为群员得到的红包
17 
18     int money = super.getMoney();//群员初始的余额
19 
20     super.setMoney(money + receivePackMoney);//群员收到钱包后的余额
21     }
22 }

 

4. 测试代码

 1 import java.util.ArrayList;
 2 public class RedEnvelopes {
 3     public static void main(String[] args) {
 4     Manager man = new Manager("群主", 100);
 5     man.show();
 6     Member memberA = new Member("群员A", 0);
 7     Member memberB = new Member("群员B", 0);
 8     Member memberC = new Member("群员C", 0);
 9     memberA.show();
10     memberB.show();
11     memberC.show();
12 
13     System.out.println("=============");
14     //调用Manager类send方法
15     ArrayList<Integer> redList = man.send(20, 3);
16     System.out.println("=============");
17     //调用Member类receive方法,接收Manager类send方法返回的ArrayList<Integer>类红包集合
18     memberA.receive(redList);
19     memberB.receive(redList);
20     memberC.receive(redList);
21     
22     //打印收发红包后各自余额
23     man.show();
24     memberA.show();
25     memberB.show();
26     memberC.show();
27     }
28 }

 

posted @ 2021-05-17 15:00  yzwandyq  阅读(111)  评论(0)    收藏  举报