案例"/>
java 21.发红包案例
文章目录
- 需求
- 概要设计
- 用户类 User:
- 群主类 Manager:
- 普通成员类 Member:
- 示例代码
需求
群主发普通红包,群里有多名成员,群主给成员发普通红包,普通红包的规则:
- 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取
- 成员领取红包后,保存到成员余额中
根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。
概要设计
用户类 User:
姓名
余额
展示信息
群主类 Manager:
发红包0. 发红包的金额要小于余额1. 存储红包的数组2. 发的红包要分成n等份3. 群主余额扣减4. 返回红包数组
普通成员类 Member:
收红包1. 接收一个红包数组2. 成员根据数组的索引领取红包随机获取数组中的索引,然后将索引对应的金额从数组中移除,给到自己账户3. 成员的余额增加
示例代码
User.java
package redEnvelope;public class User {private String name;private int money;public User() {}public User(String name, int money) {this.name = name;this.money = money;}public void show(){System.out.println("我叫:" + name + ",余额:" + money);}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getMoney() {return money;}public void setMoney(int money) {this.money = money;}
}
Manager.java
package redEnvelope;import java.util.ArrayList;public class Manager extends User{public Manager(){//这里留空,编译器会默认给加一个super();}public Manager(String name, int money) {super(name, money);}public ArrayList<Integer> send(int money, int count) {int balance = super.getMoney();//1. 存储红包的数组ArrayList<Integer> redList = new ArrayList<>();//0. 异常检测if(money > balance){System.out.println("余额不足");return redList;}//2. 发的红包要分成n等份int avg = money / count;int mod = money % count;for (int i = 0; i < count-1; i++) {redList.add(avg);}int last = avg + mod;redList.add(last);System.out.println("红包数组:" + redList);//3. 群主余额扣减super.setMoney(balance - money);//4. 返回红包数组return redList;}
}
Member.java
package redEnvelope;import java.util.ArrayList;
import java.util.Random;public class Member extends User {public Member(){}public Member(String name, int money) {super(name, money);}public void receive(ArrayList<Integer> list){Random r = new Random();int index = r.nextInt(list.size());int delta = list.remove(index);int money= super.getMoney();super.setMoney(money + delta);}
}
DemoMain.java
package redEnvelope;import java.util.ArrayList;public class DemoMain {public static void main(String[] args) {Manager manager = new Manager("唐三藏",100);Member a = new Member("孙悟空", 1);Member b = new Member("猪八戒", 2);Member c = new Member("沙悟净", 3);Member d = new Member("孙悟空", 0);Member e = new Member("猪八戒", 0);Member f = new Member("沙悟净", 0);System.out.println("当前群主及成员的余额:");manager.show();a.show();b.show();c.show();d.show();e.show();f.show();ArrayList redList = manager.send(34,6);a.receive(redList);b.receive(redList);c.receive(redList);d.receive(redList);e.receive(redList);f.receive(redList);System.out.println("抢完红包后,群主及成员的余额:");manager.show();a.show();b.show();c.show();d.show();e.show();f.show();}}
当前群主及成员的余额:
我叫:唐三藏,余额:100
我叫:孙悟空,余额:1
我叫:猪八戒,余额:2
我叫:沙悟净,余额:3
我叫:孙悟空,余额:0
我叫:猪八戒,余额:0
我叫:沙悟净,余额:0
红包数组:[5, 5, 5, 5, 5, 9]
抢完红包后,群主及成员的余额:
我叫:唐三藏,余额:66
我叫:孙悟空,余额:6
我叫:猪八戒,余额:7
我叫:沙悟净,余额:8
我叫:孙悟空,余额:5
我叫:猪八戒,余额:9
我叫:沙悟净,余额:5
更多推荐
java 21.发红包案例
发布评论