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 }

浙公网安备 33010602011771号