发红包案例(RedPacketFrame简介)

发红包案例:

案例目录结构如下(red包为第三方包,需要的话可以到网上自行下载或私信我邮箱即可):
在这里插入图片描述

// 1.这里将借用发红包的框架:RedPacketFrame(图形界面化),OpenMode处理红包分发逻辑的接口(里面只有一个抽象方法,需要自己实现),实现普通红包和手气红包的分发:
// 框架中提供相关参数:totalMoney(红包总金额)、totalCount(要分发的总份数)、divide(int totalMoney, int totalCount)处理方法、ArrayList<Integer>(将处理后的数据放到数组列表中)
/* 2.注意事项: 
普通红包(平均分发):totalMoney / totalCount,平均分发会有除不尽的情况,此时推荐将余数加到最后一份上。
手气红包(随机):手气红包处理逻辑可以自己设计,这里推荐一种常用的设计思想:最少一分钱(java底层已经将钱转换为分计算了),最多不超过平均数的2倍,余额越发越少。
RedPacketFrame为一个抽象类,不能直接new对象,需要通过实现类来使用此抽象类。
setOwnerName("字符串"):此方法是RedPacketFrame框架提供我们修改发红包人名字的。
setOpenWay(OpenWay):设置分发(打开)红包的方式,里面传入OpenWay类型的数据。
*/
import red.OpenMode;
// 3.导入RedPacketFrame抽象类:
import red.RedPacketFrame;//特别提醒:导入一个自定义的包时,需要在包中的java文件中声明包,其格式:package 包中java文件所在的位置,如:package red;
public class Start{public static void main(String[] args){// 5.创建一个红包:SonRedPackClass redpack = new SonRedPackClass("测试发红包案例");//这里传入字符串用来设置红包的标题redpack.setOwnerName("苦海");//设置发红包人姓名// 7.创建平均分发红包对象:OpenMode avgredpack = new AvgRedPack();// OpenMode randomredpack = new RandomRedPack();//经测试,随机分发红包处理方法可以实现redpack.setOpenWay(avgredpack);//设置打开方式为平均分发红包,当着这里可以传入随机分发红包的OpenMode数据};
};
import red.RedPacketFrame;//导入RedPacketFrame用来被继承
// 4.创建一个SonRedPackcCass子类(实现类)来继承RedPacketFrame:
public class SonRedPackClass extends RedPacketFrame{public SonRedPackClass(String title){//title为图形界面的标题super(title);//通过super调用父级的构造方法}
};
// 6.实现OpenMode接口中的divide方法,这里使用平均分发的思想覆盖重写 divide方法:
import java.util.ArrayList;
import red.OpenMode;
public class AvgRedPack implements OpenMode{@Overridepublic ArrayList<Integer> divide(final int totalMoney,final int totalCount){//因为在整个分发过程中总份数和总钱数不变,这里可以使用final进行修饰,当然不写也可以ArrayList<Integer> list = new ArrayList<>();//创建一个数组,用来存放平均分发的每一份数据int avg = totalMoney / totalCount;//平均数int mod = totalMoney % totalCount;//余数// 将平均数通过循环放入到数组中,余数推荐分发给最后一个或第一个,这里将余数分发给最后一个了,如:for(int i = 0; i < totalCount;i++){if(i == totalCount-1){list.add(avg + mod);}else{list.add(avg);}};return list;};
}
// 8.再实现一下OpenMode接口中随机分发红包的方法divide:
import java.util.ArrayList;
import red.OpenMode;
import java.util.Random;
public class RandomRedPack implements OpenMode{@Overridepublic ArrayList<Integer> divide(final int totalMoney,final int totalCount){//因为在整个分发过程中总份数和总钱数不变,这里可以使用final进行修饰,当然不写也可以ArrayList<Integer> list = new ArrayList<>();//创建一个数组,用来存放随机分发的每一份数据//定义两个变量:剩余金额、剩余分发次数,如:int leftMoney = totalMoney;//初始化为总金额,每分发一次,金额减少一次int leftCount = totalCount;//初始化为总次数,每分发一次,次数减少一次// 通过循环产生随机数,并将产生的随机数放到数字中:for(int i = 0; i < totalCount;i++){//前面的人得到随机红包,最后一个人将剩余金额都给他即可,因此这里循环总人数-1Random random = new Random();//创建一个随机数生成器int money = random.nextInt(leftMoney / leftCount *2) + 1;//生成随机金额,最少应分到1分钱,所以因是1+一个随机数;if(i == totalCount-1){list.add(leftMoney);}else{list.add(money);};leftMoney -= money;leftCount--;};return list;};
}

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

easy connect 获取服务端配置信息失败_如何统计 Mysql 服务器状态信息?

最近在看《高性能的 Mysql》一书&#xff0c;下面是关于如何学习统计 Mysql 服务器状态的学习总结&#xff0c;主要是学习使用 SHOW STATUS&#xff0c;SHOW ENGINE INNODB STATUS&#xff0c;SHOW PROCESSLIST&#xff0c;SHOW PROFILE 四个命令。命令一&#xff1a;SHOW STAT…

共聚焦图片怎么加标尺_科研教程|利用PS给电镜加标尺

一、开篇前言大家好&#xff0c;大飞鸽就是我&#xff0c;我就是大飞鸽。我们拍摄的SEM或者TEM上都会有放大倍数、加速电压、标尺、电镜信号、拍摄时间等信息&#xff0c;然而正常情况下我们需要的只有标尺这个信息。例如下方这个电镜图为SEM图片&#xff0c;图片下方包含了放大…

感觉又学到了不少,在这里写下来,但也有一个问题,不知道是为甚吗?

今天具体学习了如何去访问和修改HTML元素的内容与样式&#xff0c;也就是DOM中的节点 在这里有三种方法&#xff1a; 通过使用 getElementById() 方法通过使用 getElementsByTagName() 方法通过使用 getElementsByClassName() 方法• getElementById()方法&#xff1a;返回带有…

java中Object和Objects类、toString方法和equals方法介绍

Object类&#xff1a; Object类位于java.lang包中&#xff0c;lang包下的类无需导包就可以使用&#xff0c;object是Java语言中的根类&#xff0c;即所有类的父类。Object中描述的所有方法其子类都可以使用。在对象实例化的时候&#xff0c;最终找的父类就是Object。 如果一个…

实现线段切割法_切割晶圆及玻璃产品的现代技术与设备

作者&#xff1a;韩卓申科VS1,2&#xff0c;伊凡诺夫VI3&#xff0c;吕鸿图2,4&#xff0c;纳乌莫夫A S2,4&#xff0c;王薇媛4摘要&#xff1a;由于需以各种非金属半导体材料晶圆制造使用价值低之微电子产品&#xff0c;对其加工高精度及品质改善的要求更为严苛&#xff0c;因…

学python最重要的是_Python学习,要选哪个版本?

纵观各大编程语言在 2017 年的发展情况&#xff0c;我们会发现涌现出诸如 Go、Swift 这类后起之秀&#xff0c;而其中最为耀眼的当属 Python。之所以 Python 如此受捧&#xff0c;不仅仅是人工智能、数字科学领域的兴起&#xff0c;而且与其自身的特性必不可分&#xff0c;正应…

ARX中实现实体的偏移

static AcDbObjectId OffsetEnty(const ACHAR* BlkName,AcDbObjectId entId,double OfsValue,AcDbDatabase *pDbCrtEntity:: pPurDb); //&#xff01;&#xff08;多段线特别处理&#xff09; AcDbObjectId EditEntity::OffsetEnty(const ACHAR* BlkName,AcDbObjectId entId,do…

java中Date类、DateFormat及SimpleDateFormat简介

Date类&#xff1a; Date类表示日期和时间&#xff0c;精确到毫秒&#xff08;千分之一秒&#xff09;位于java.util.Date下。日期是可以计算的&#xff0c;其本质是利用毫秒值进行计算&#xff0c;任何一个时间点都可以转换为毫秒值&#xff0c;毫秒值表示一个瞬间。 时间原…

gettype获取类名_在TypeScript中运行时获取对象的类名

在TypeScript中运行时获取对象的类名是否可以使用typescript在运行时获取对象的类/类型名称&#xff1f;class MyClass{}var instance new MyClass();console.log(instance.????); // Should output "MyClass"Adam Mills asked 2019-04-11T03:14:30Z9个解决方案…

LeetCode-Maximal Rectangle-最大矩形

https://oj.leetcode.com/problems/maximal-rectangle/ 一堆0,1矩阵中计算出由1组成的长方形的最大面积。 使用了直方图求最大面积的算法。枚举每一行p&#xff0c;然后在将一行上的所有列看做朝i>p方向出发的直方图&#xff0c;然后在这个直方图上用栈存储递增序列的那个一…

cefsharp 加载网页慢_网站访问慢的排查方案(史上最详细)

说实话&#xff0c;比起网站打不开&#xff0c;网站访问慢更让人抓狂。因为造成网站访问慢的因素太多了&#xff0c;一般用户根本无从下手&#xff01;任他千头万绪的问题&#xff0c;从以下三个方面入手&#xff0c;也能轻松破解访问慢的大难题 &#xff1a;响应时间、执行时间…

java中日历类:Calendar

Calendar日历类 该类为抽象类&#xff0c;将所有可能用到的时间信息封装为静态成员变量&#xff0c;方便获取时间属性&#xff0c;其位于java.util.Calendar&#xff0c; 其中的getInstance方法可以返回一个Calendar类的子类对象&#xff0c;可以直接使用次子类进行创建对象&am…

typescript语法高亮插件_vscode常用插件

插件介绍HTML Snippets > 初级H5代码片段及提示HTML CSS Support > 初级H5代码片段及提示Debugger for Chrome > 让 vscode 映射 chrome 的 debug功能&#xff0c;静态页面都可以用 vscode 来打断点调试jQuery Code Snippets > jquery 重度患者必须品&#xff0c;废…

cfree运行程序错误_C/C++程序调试和内存检测

程序出现错误很正常&#xff0c;一个优秀的程序员必须学会调试&#xff0c;发现错误并改正。减少程序错误最有效的方法是&#xff1a;在敲代码之前&#xff0c;多花点时间思考&#xff0c;如何构造程序&#xff0c;数据结构和算法&#xff0c;尽量把细节提前写下来&#xff0c;…

java中System类、String Builder类简介

System类&#xff1a; System类为系统类&#xff0c;此包位于java.lang.System下&#xff0c;可以获得与系统相关的信息或系统操作&#xff0c;如&#xff1a; public class SystemClass{public static void main(String[] args){// 1.System下有许多静态的方法&#xff0c;其…

session的removeattribute移除一个不存在的属性会怎么用_公认峡谷机制最完美,对线几乎无解,夏侯惇高端局为何火不起来?...

Hello各位亲爱的小伙伴们&#xff0c;大家好&#xff0c;我是沐辰。在王者荣耀中始终有这么一个说法&#xff1a;“夏侯惇是王者峡谷机制最完美的英雄”&#xff0c;当然这个可不是沐辰胡编乱造&#xff0c;而是策划在数年前就曾公开发表过的看法。从机制上来&#xff0c;夏侯惇…

python图标的演变_python day 22 CSS拾遗之箭头,目录,图标

lanxing4. CSS拾遗之箭头画法.up { border-top: 30px solid green; border-right: 30px solid transparent; border-bottom: 30px solid transparent; border-left: 30px solid transparent; display: inline-block; } .down { border-top: 30px solid transparent; border-rig…

PHP中生成UUID

一、什么是UUID 简单的说UUID就是一串全球唯一的(16进制)数字串。 UUID的全拼为“Universally Unique Identifier”&#xff0c;可以译为“通用唯一识别码”。UUID由开源软件基金会 (Open Software Foundation, OSF) 定义&#xff0c;是分布式计算环境 (Distributed Computing …

java中包装类介绍

包装类&#xff1a; 基本数据类型使用起来非常方便&#xff0c;但是没有对应的方法来操作这些基本类型的数据&#xff0c;我们只有通过一个类把基本类型的数据封装起来&#xff0c;并在类中定义一些方法&#xff0c;这个类就叫做包装类。 包装类对应基本数据类型中的四类八种…

岗位po是什么意思_面试时,面试官问你有什么优点和缺点?应该如何巧妙的回答?...

工作多年&#xff0c;被面试过很多次&#xff0c;也面试过很多人&#xff0c;其中有一次印象最深刻&#xff0c;这次我不是主面试官&#xff0c;经理要面试一个候选人&#xff0c;他就拉上了我&#xff0c;作为陪衬&#xff0c;用经理的话说就是撑撑场面&#xff0c; 所以问题的…