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

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

文章目录

      • 一.Main.java
      • 二.User.java
      • 三.Manager.java
      • 四.Member.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);

    }

}

你可能感兴趣的:(java,java,列表)