首页 > 其他分享 >红包案例

红包案例

时间:2022-10-17 09:26:43浏览次数:59  
标签:红包 name int meney 案例 群主 public

红包案例

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

1.群主的一笔金额 从群主余额里扣除 平均分成n等份 让成员领取

2.成员领取红包后 保存到成员余额中

请根据描述 完成案例中所有类的定义以及制定类之间的继承关系 并完成发红包的操作

分析图

 代码

父类:

public class User {
private String name;//名字
private int meney;//余额

public User(String name, int meney) {
this.name = name;
this.meney = meney;
}

public User() {
}


public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getMeney() {
return meney;
}

public void setMeney(int meney) {
this.meney = meney;
}
//成员方法
public void show(){
System.out.println("我叫"+name+",余额:"+meney);
}

}

群主类:

public class Manager extends User {
public Manager() {
}

public Manager(String name, int meney) {
super(name, meney);
}
public ArrayList<Integer> send(int totalMoney,int count){
//创建一个集合用于存放红包
ArrayList<Integer> list = new ArrayList<>();
//设置一个变量接收群主的余额
int lefMoney=super.getMeney();
//判断发送的红包钱数是否大于群主的余额
if (totalMoney>lefMoney){
//如果是就提示余额不足
System.out.println("余额不足");
//返回一个空集合 证明发送失败
return list;
}
//如果不是就扣除余额并重新设置群主的余额
super.setMeney(lefMoney-totalMoney);
//将红包拆分
int avg=totalMoney/count;
//发红包除不尽数放到这个变量里
int mod=totalMoney%count;
//for循环将红包存进集合中,-1是因为我们要将除不尽的数塞进红包发给最后一个人,所以将它移除
for (int i = 0; i < count-1; i++) {
list.add(avg);
}
//将除不尽的数放进集合
int last=avg+mod;
list.add(last);

return list;
}
}

群成员类:

public class Member extends User {
public Member(String name, int meney) {
super(name, meney);
}

public Member() {
}
public void receive(ArrayList<Integer> list){
//设置一个随机数当做集合当中的编号 范围就是集合的长度
int anInt = new Random().nextInt(list.size());
//根据索引 从集合当中删除
Integer remove = list.remove(anInt);
//获取群成员自己本来的钱
int meney = super.getMeney();
//将红包的钱加上
super.setMeney(meney+remove);
}
}

测试类:

public class test {
public static void main(String[] args) {
//创建群主对象
Manager owner = new Manager("群主", 100);
//创建群成员的对象
Member memberA = new Member("成员A", 0);
Member memberB = new Member("成员B", 0);
Member memberC = new Member("成员C", 0);
//查询群主的余额
owner.show();
//查询成员A-C的余额
memberA.show();
memberB.show();
memberC.show();
System.out.println("-------------------------------");

//群主发红包 群主发20 三份红包
ArrayList<Integer> send = owner.send(20, 3);
//群成员接收红包
memberA.receive(send);
memberB.receive(send);
memberC.receive(send);

//查询群主的余额
owner.show();
//查询成员A-C的余额
memberA.show();
memberB.show();
memberC.show();
}
}

标签:红包,name,int,meney,案例,群主,public
From: https://www.cnblogs.com/shenziyi/p/16797928.html

相关文章

  • 数据结构—案例
    案例1、一元多项式的运算在数学上,一个一元多项式Pn(x)可按升幂写成:案例2、稀疏多项式的运算案例3、图书信息管理系统 ......
  • Java注解(4):一个真实的Elasticsearch案例
    昨天把拼了一半的注解+Elasticsearch积木放下了,因为东西太多了拼不好,还容易乱。休息了一晚上接着来。 接着昨天,创建elasticsearch文档注解(相当于数据表的注解):/***e......
  • 盘点一个Python自动化办公的实战案例
    大家好,我是皮皮。一、前言前几天在Python钻石交流群【Hxy任我肥】问了一个Python自动化办公的问题,提问截图如下:想要的效果是下图这样的:准确来说,这个都不算是问题了,而......
  • 双指针算法学习总结以及实现案例
    双指针算法简介:指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(左右指针)的指针进行扫描,从而达到相应的目的。换言之,双......
  • 【Nuxt.js】案例练习入门
    SQL表/*NavicatPremiumDataTransferSourceServer:localhost_3306SourceServerType:MySQLSourceServerVersion:50549SourceHost:......
  • 斗地主游戏的案例开发
    packagecom.itheima._08斗地主游戏洗牌发牌看牌;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.List;importj......
  • Java注解(3):一个真实Elasticsearch案例
    学会了技术就要使用,否则很容易忘记,因为自然界压根就不存在什么代码、变量之类的玩意,这都是一些和生活常识格格不入的东西。只能多用多练,形成肌肉记忆才行。在一次实际的产......
  • HM-SCAli2【案例环境搭建】
    1.案例准备以电商项目中的商品、订单、用户为案例进行学习1.1技术选型maven:3.3.9数据库:MySQL5.7持久层:SpingDataJpa其他:SpringCloudAlibaba技术栈1.2......
  • MyBatisPlusConfig中配置分页插件以及分页案例
    1、MyBatisPlusConfig中配置分页插件依赖参考:https://www.cnblogs.com/konglxblog/p/16793936.htmlpackagecom.stu.service.base.config;importcom.baomidou.mybati......
  • Java8新特性之Stream流(含具体案例)
    一、概述  Stream流是Java8新提供给开发者的一组操作集合的API,将要处理的元素集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选、排序、聚......