Java实现发红包功能
作者:Java菜鸟~ 发布时间:2023-12-09 10:33:03
标签:java,发红包
Java发红包案例,供大家参考,具体内容如下
首先我们需要分析这个代码的架构是什么,需要什么类组成等。
我们需要建立4个类,这4个类分别是用户类、群主类、成员类,运行类;
因为群主类和成员类都有共同的特点--------拥有名字和余额,所以需要用户类去存储名字与余额
第一步:我们需要建立一个用户类,里面存储的是名字和余额
package Java.RedPacketCode;
public class UserClass {
private String name;
private int balance;
public UserClass(String name, int balance) {
this.name = name;
this.balance = balance;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setBalance(int balance) {
this.balance = balance;
}
public int getBalance() {
return balance;
}
public void show() {
System.out.println("Name:" + name + "****" + "RMB:" + balance);
}
}
第二步:我们需要一个群主类去继承用户类
package Java.RedPacketCode;
import java.util.ArrayList;
public class GroupMainClass extends UserClass {
public GroupMainClass(String name, int balance) {
super(name, balance);
}
public ArrayList<Integer> handOutRedEnvelopes(int amountRequired, int count) {
int existingAmount = super.getBalance();
if (existingAmount < amountRequired) {
System.out.println("Your balance is insufficient!");
}
int money=existingAmount-amountRequired;
super.setBalance(money);
System.out.println(super.getName()+" has"+money+" yuan left");
int avg = amountRequired / count;
int remainder = amountRequired % count;
int decimal = avg + remainder;
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < count - 1; i++) {
list.add(avg);
}
list.add(decimal);
return list;
}
}
第三步:我们需要建立一个成员类去继承用户类
package Java.RedPacketCode;
import java.util.ArrayList;
import java.util.Random;
public class MemberClass extends UserClass {
public MemberClass(String name, int balance) {
super(name, balance);
}
public void redEnvelopes(ArrayList<Integer> list) {
Random r = new Random();
int index = r.nextInt(list.size());
int money = list.remove(index);
int existingAmount = super.getBalance();
int totalAmount = money + existingAmount;
super.setBalance(totalAmount);
}
}
第四步:我们需要建立一个运行类,用来运行代码
package Java.RedPacketCode;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
GroupMainClass gmc = new GroupMainClass("Groupleader", 200);
gmc.show();
MemberClass mc1 = new MemberClass("Tom", 0);
MemberClass mc2 = new MemberClass("Jack", 0);
MemberClass mc3 = new MemberClass("Jenny", 0);
UserClass arrays[] = {mc1, mc2, mc3};
for (int i = 0; i < arrays.length; i++) {
arrays[i].show();
}
System.out.println("==================");
Scanner scanner = new Scanner(System.in);
System.out.println("How much would you like to send");
int money = scanner.nextInt();
System.out.println("How many red packets would you like to send");
int count = scanner.nextInt();
ArrayList<Integer> list = gmc.handOutRedEnvelopes(money, count);
mc1.redEnvelopes(list);
mc2.redEnvelopes(list);
mc3.redEnvelopes(list);
for (int i = 0; i < arrays.length; i++) {
arrays[i].show();
}
}
}
希望大佬们多多指教。
来源:https://blog.csdn.net/qq_43875441/article/details/106064695


猜你喜欢
- 使用ModelAndView向request域对象共享数据index.html<a th:href="@{/testMode
- 前言本文学习MP中的更新操作方法,带大家一起查看源码,了解更新操作的方法。学会熟练地去运用更新方法解决自己在项目中的问题。一、通过id更新1
- 本文实例为大家分享了Java控制台实现猜拳游戏的具体代码,供大家参考,具体内容如下1、目标通过控制台实现一个人机对战的猜拳游戏,用户通过输入
- 目录前言方案一: 数组方案二:HashMap由 key 获取 value由 value 获取 key解决方案三:枚举总结前言开发系统一些状态
- C++11中的std::packaged_task是个模板类。std::packaged_task包装任何可调用目标(函数、lambda表达
- 本文实例讲述了Android通过Handler与AsyncTask两种方式动态更新ListView的方法。分享给大家供大家参考,具体如下:有
- 本人没有接触android开发,由于想学习一下,所以自学,接下来是我学习路线,希望我走过的路能给你提供帮助。 下载首先我们需要下载 Andr
- 工具类-java精确到小数点后6位验证要求,必须精确到小数点后6位,但是后面都是0的话,double会省略0,正则验证不通过,所以有了下面解
- 前言Java中的原生反射库虽然方法不多,但写起来却非常繁琐, 比如:public static <T> T create(Htt
- 方法一、使用系统控件ViewFlipper方式:布局文件:<ViewFlipper andro
- 先上代码,再来分析public class FileDownloadList {/**上下文*/ private Context mCont
- 1.情景展示java发送get请求、post请求(form表单、json数据)至另一服务器;可设置HTTP请求头部信息,可以接收服务器返回c
- 端口设置和contextpath的配置端口设置Spring boot 默认端口是8080,如果想要进行更改的话,只需要修改applicato
- 1、maven是什么,为什么存在?项目结构是什么样子,怎么定位jar官方网站说了好多,整的多复杂一样,简单说:maven是一个管理包的工具。
- JSONObject的使用 一、 JSON对象的使用:String content = "{'username&
- spring cloud gateway获取请求的真实地址在使用spring cloud gateway的时候,路由一般配置为服务名例如 l
- 1.定义字符串字符串常见的构造方式如下:String s1 = "with";String s2 = new Strin
- (一)springboot web项目打jar包1、打包两种打包方式maven命令打包切换目录到工程根下,pom.xml所在位置,运行mav
- Spring Data JPA设置字段默认值在Column注解中写入以下两个属性,为什么自己查一下文档吧,即可实现字段默认值设置,并顺带解决
- 最近在写程序的时候,经常遇到大量需要异步访问的情况,但是对于async和await到底怎么写,还不是非常明确。1.普通的程序怎么写?clas