java 21.发红包案例

编程入门 行业动态 更新时间:2024-10-28 08:28:46

java 21.发红包<a href=https://www.elefans.com/category/jswz/34/1770649.html style=案例"/>

java 21.发红包案例

文章目录

    • 需求
    • 概要设计
      • 用户类 User:
      • 群主类 Manager:
      • 普通成员类 Member:
    • 示例代码

需求

群主发普通红包,群里有多名成员,群主给成员发普通红包,普通红包的规则:

  1. 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取
  2. 成员领取红包后,保存到成员余额中
    根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。

概要设计

用户类 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.发红包案例

本文发布于:2024-02-11 06:04:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1679540.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:案例   发红包   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!