java实现发红包案例(一) 您所在的位置:网站首页 群主分配对象怎么分 java实现发红包案例(一)

java实现发红包案例(一)

2024-07-16 13:51| 来源: 网络整理| 查看: 265

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 send(int totalMoney,int count){ //创建一个集合储存若干个红包的金额 //将金钱塞进红包用ArraryList来实现储存,在这操作之前需要将金钱均分为total等份 //如有出现除不尽的情况可以将最后金钱余数(mod)放在最后一个红包内 //使用for循环,通过redList.add(avg);完成塞红包的动作 //返回redList } public void receive(ArrayList 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 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 send(int totalMoney,int count){ //创建一个集合储存若干个红包的金额 ArrayList redList = new ArrayList(); int leftMoney = super.getMoney(); if(leftMoney 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 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 daysI miss youxiaokeai



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有