java零基础 Quartz 机器学习 properties 学生排队 mAPI web url jsf meteor woocommerce openssl Amaze UI vue全局组件 管理后台ui jquery的点击事件 mac虚拟打印机 mysql数据库名称 ipex接口 kubernetes集群搭建 python获取日期 python字典get python基础教程 python调用函数 python怎么入门 java接口 java9 java正则 java类与对象 java8教程 怎么配置java环境 java可变参数 java删除数组中的某个元素 java文件读取 linux命令行大全 python教程视频 stretchcolumns 计价软件 选项卡 tar解压
当前位置: 首页 > 学习教程  > 编程语言

java实现发红包案例(一)

2020/9/19 13:31:10 文章标签:

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


本文链接: http://www.dtmao.cc/news_show_200004.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?