java入门-基于面向对象的抢红包模拟(源码+注释)

东软来我们学校讲的课程,个人感觉很水,但是作为java面向对象入门挺不错的

一.Main.java

package com.neusoft;

import java.util.ArrayList;

public class Main {
    public static void main(String[] args){
        //创建群主
        Manager m = new Manager("群主A",10000);

        //创建群成员
        Member a = new Member("成员A",0);
        Member b = new Member("成员B",0);
        Member c = new Member("成员C",0);
        Member d = new Member("成员D",0);

        //获取红包列表
        ArrayList<Float> redPacket = m.sendRed(100,6);

        //显示当前金额
        a.show();
        b.show();
        c.show();
        d.show();

        //从列表中随机取一个金额
        a.recevice(redPacket);
        b.recevice(redPacket);
        c.recevice(redPacket);
        d.recevice(redPacket);

        //显示当前金额
        a.show();
        b.show();
        c.show();
        d.show();
    }
}

二.User.java

package com.neusoft;

//用于生成群主和群成员的父类
public class User {
    //成员变量
    private String uname;
    private float leftMoney;

    //构造函数
    public User(){
    }

    //构造函数
    public User(String uname, float leftMoney) {
        this.uname = uname;
        this.leftMoney = leftMoney;
    }

    //展示函数
    public void show(){
        System.out.println("姓名:"+this.uname+" 余额:"+this.leftMoney);
    }

    //一键生成的四个get和set方法
    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public float getLeftMoney() {
        return leftMoney;
    }

    public void setLeftMoney(float leftMoney) {
        this.leftMoney = leftMoney;
    }

}

三.Manager.java

package com.neusoft;

import java.util.ArrayList;
import java.util.Random;

public class Manager extends User{
    //构造函数
    public Manager(){
    }

    //构造函数
    public Manager(String uname, float leftMoney) {
        super(uname, leftMoney);
    }

    //发红包函数,生成对应的红包金额列表
    public ArrayList<Float> sendRed(float totalMoney,int count){
        //申请内存
        ArrayList<Float> redList = new ArrayList<Float>();

        //发红包余额判断
        if(this.getLeftMoney()<totalMoney){
            System.out.println("余额不足");
            //余额不足返回空列表
            return redList;
        }

        //申请随机数
        Random r = new Random();
        //获取总金额
        float remainMoney = totalMoney;
        //获取红包个数
        int remainNum = count;

        //依次获取单个红包金额
        while (remainNum>1){
            //获取随机金额
            float m = r.nextFloat()*remainMoney;
            //使金额不少于0.01
            if(m<0.01){
                m=0.01f;
            }
            //计算当前余额
            remainMoney = remainMoney - m;
            //加入红包金额列表
            redList.add(m);
            //红包个数减少
            remainNum--;
        }
        //将余额放进最后一个红包
        redList.add(remainMoney);
        //返回红包金额列表
        return redList;
    }

}

四.Member.java

package com.neusoft;

import java.util.ArrayList;
import java.util.Random;

public class Member extends User{
    //构造函数
    public Member() {
    }

    //构造函数
    public Member(String uname, float leftMoney) {
        super(uname, leftMoney);
    }

    //判断红包个数是否存在
    public void recevice(ArrayList<Float> list){
        if(list.size()<=0){
            //红包抢空提示
            System.out.println("手慢了");
            return;
        }

        //获取随机金额下标
        int index = new Random().nextInt(list.size());

        //删除该下标
        float del = list.remove(index);

        //更新余额
        this.setLeftMoney(this.getLeftMoney()+del);

    }

}

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Henrik-Yao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值