温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java发红包的案例分析

发布时间:2020-08-19 13:48:53 来源:亿速云 阅读:149 作者:小新 栏目:编程语言

小编给大家分享一下Java发红包的案例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

划分为三个类,一个父类把金额和姓名都放在父类里。然后在新建两个类,分别是群主类和普通成员类。群主类有发红包的方法,普通成员类里有收红包的方法。也就是只有群主才可以发红包,普通成员只能收红包。

Java发红包的案例分析

代码实现:

父类

package cn.itcast.day09.demo14;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 void setName(String name) {
        this.name = name;
    }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }}

群主类:

 package cn.itcast.day09.demo14;import cn.itcast.day09.demo04.Arraylis;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(totalMoney>LeftMoney){
            System.out.println("余额不足");
            return redList;//返回空集合
        }

        //扣钱,更新余额。
        //公式:最新余额=上次余额-发的钱
        super.setMoney(LeftMoney-totalMoney);
        //发红包需要平均拆分成为count份
        int avg=totalMoney/count;
        int mod=totalMoney %count;//余数,也就是零头

        //下面把红包一个一个放到集合当中
        for (int i = 0; i < count-1; i++) {
            redList.add(avg);
            //除不开的零头,抱在最后一个红包当中
            /*if(i==count-1){
                redList.add(avg+mod);
            }*/
        }
        int last=(avg+mod);
        //除不开的零头,抱在最后一个红包当中
        redList.add(last);
        return  redList;
    }}

普通成员类:

 package cn.itcast.day09.demo14;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 recive(ArrayList<Integer> list){
        //从多个红包当中随便抽取一个,给自己
        //随机获取一个list集合当中的随机编号
        int index=new Random().nextInt(list.size());
        //根据索引,从集合当中删除,并且得到被删除的红包给自己。
        int delta=list.remove(index);
        //当前成员本来有多少钱
        int money=super.getMoney();
        //从新设置余额
        super.setMoney(money+delta);
    }}

客户端:

 package cn.itcast.day09.demo14;import java.util.ArrayList;public class MainRedPacket {
    public static void main(String[] args) {
        Manager manager=new Manager("群主",100);
        Member one=new Member("成员A",0);
        Member two=new Member("成员B",0);
        Member three=new Member("成员C",0);
        manager.show();
        one.show();
        two.show();
        three.show();
        System.out.println("=================================");
        ArrayList<Integer> redList=manager.send(20,3);
        //三个普通成员收红包
        one.recive(redList);
        two.recive(redList);
        three.recive(redList);
        //群主最新余额
        manager.show();
        //成员最新余额
        one.show();
        two.show();
        three.show();
    }}

结果

Java发红包的案例分析

以上是Java发红包的案例分析的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI