java实现发红包案例(一)

java实现发红包案例(一)java 实现发红包案例 一 题目要求 编码实现群主发红包 群成员收红包的功能 分析 1 群主发红包 是一个特有方法 三要素 返回值类型 arrayList 方法名称 send 参数列表 红包总金额 totalMoney

大家好,我是讯享网,很高兴认识大家。

java实现发红包案例(一)

题目要求

编码实现群主发红包,群成员收红包的功能。

分析

1、群主发红包是一个特有方法
三要素:
返回值类型:arrayList
方法名称:send()
参数列表:红包总金额(totalMoney)、红包个数(total)

2、群成员收红包是一个特有方法
三要素:
返回值类型:void
方法名称:receive()
参数列表:arrayList

3、群主和群成员均有同样的属性:姓名、余额
定义一个user父类,让群主和群成员均可以继承其中的姓名和余额。

继承的概念:
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

继承的格式:

class 父类 { } class 子类 extends 父类 { } 

讯享网

程序设计思路

1、创建一个父类User来储存Manager和Member的共有属性name和money;


讯享网

讯享网class User { private string name; private int money; } class Manager extends User { } class Member extends User { } 

2、创建子类Manager和Member,除了继承父类User的属性外,还要分别自定义特有方法发红包send()和收红包receive();

判断群主的余额是否大于要发的红包金额,如果是则进行发红包操作;

public ArrayList<Integer> send(int totalMoney,int count){ //创建一个集合储存若干个红包的金额 //将金钱塞进红包用ArraryList来实现储存,在这操作之前需要将金钱均分为total等份 //如有出现除不尽的情况可以将最后金钱余数(mod)放在最后一个红包内 //使用for循环,通过redList.add(avg);完成塞红包的动作 //返回redList } public void receive(ArrayList<Integer> list){ //使用Random随机产生红包redList中的index坐标(取值范围为[0,redList.size())) //将该index对应的红包删除并赋值给群成员,更新redList.size(),for循环完成红包的分发 } 

java 代码:

  • main函数
讯享网package test_1.demo05; import java.util.ArrayList; public class MainRedPacket { 
    public static void main(String[] args) { 
    Manager manager = new Manager("群主",520); Member one = new Member("群成员1",0); Member two = new Member("群成员2",10); Member three = new Member("群成员3",30); //显示未发红包前各成员的余额 manager.show(); one.show(); two.show(); three.show(); System.out.println("=========="); System.out.println("群主开始发红包"); ArrayList<Integer> redList = manager.send(100,3); //普通群成员收红包 one.receive(redList); two.receive(redList); three.receive(redList); manager.show(); one.show(); two.show(); three.show(); System.out.println("======="); } } 
  • User 父类
package test_1.demo05; 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 int getMoney() { 
    return money; } public void setName(String name) { 
    this.name = name; } public void setMoney(int money) { 
    this.money = money; } } 
  • Manger子类
讯享网package test_1.demo05; import java.util.ArrayList; public class Manager extends User{ 
    public Manager(){ 
    } public Manager(String name, int money) { 
    super(name, money); } public ArrayList<Integer> send(int totalMoney,int count){ 
    //创建一个集合储存若干个红包的金额 ArrayList<Integer> redList = new ArrayList<>(); int leftMoney = super.getMoney(); if(leftMoney<totalMoney){ 
    System.out.println("余额不够,请充值再发红包,谢谢!"); return redList; } // else // System.out.println("请输入红包金额和红包个数"); //重新设置余额 super.setMoney(leftMoney - totalMoney); //将红包金额拆分进total个红包内 int avg = totalMoney / count; int mod = totalMoney % count; //将金钱塞进红包内 for (int i = 0; i < count - 1; i++) { 
    redList.add(avg); } int last = avg + mod; redList.add(last); return redList; } } 
  • Member子类
package test_1.demo05; 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){ 
    //从多个红包中抽取一个给自己 //随机获取一个集合当中的索引编号 int index = new Random().nextInt(list.size()); //通过索引,从集合中将该红包给自己,然后删除该红包 int delta = list.remove(index); int money = super.getMoney(); super.setMoney(money+delta); } } 

运行结果

在这里插入图片描述

这个发红包demo是一个很基本的包含继承、构建方法和调用方法的demo,里面还有很多细节没有处理好,比如当群主发的红包金额比账户余额大时,该怎么处理,还有就是红包分发会有随机金额和平均金额两种模式,这里还么实现随机金额的功能,后面会更新博客进行代码的优化。

Memorial Day is 354 days
I miss you
xiaokeai

小讯
上一篇 2025-02-20 23:24
下一篇 2025-03-09 19:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/73475.html