简单的利用Random 、Arraylist集合等实现发红包的功能

发红包的简单实现

1.定义一个父类PublicSpace其中含有 私有属性name yue(账户余额)有参和无参构造提供getter和setter方法 以及含有show()方法来输出账户的的信息
2.定义一个manager的子类作为群主的类,其继承父类的属性并且有自己的发红包的方法
3.定义一个Son的子类作为收红包的白嫖党的类,其继承父类的属性并且有自己的发红包的方法

父类PublicSpace

public class PublicSpace {
	private String name;
	private double yue;
	public PublicSpace() {}
	public PublicSpace(String name, double yue) {
		super();
		this.name = name;
		this.yue = yue;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getYue() {
		return yue;
	}
	public void setYue(double yue) {
		this.yue = yue;
	}
	public void show() {
		System.out.println("我是"+name+"、我的钱包余额为:"+yue);
	}

群主子类manager

import java.util.ArrayList;
//继承父类
public class Manager extends PublicSpace {
	public Manager() {}//无参构造
	//有参的构造
	public Manager(String name, double yue) {
		super(name,yue);
	}
	//定义群主发红包的方法 传入红包大小和划分个数的参数
	public ArrayList<Double> send(int totalmoney,int count){
		//实力化一个集合来存储随机划分的若干个红包,然后返回这个集合
		ArrayList<Double> list=new ArrayList<Double>();
		
		//先调用父类的getyue()来查看群主的钱包余额,以判断够不够发红包
		double yue=super.getYue();
		if(yue<totalmoney) {
			System.out.println("钱不够发红包了");
			System.out.println("测试list是否为 0-----:"+list.size());
			//钱不够 返回空的集合
			return list;
		}else {
//			double s=yue-totalmoney;
//			重新设置剩余的钱
			super.setYue(yue-totalmoney);
			//分钱 如果有剩余放入第三份中
			double money=totalmoney / count;
			double mon=totalmoney % count;
			//循环将正常的红包放入集合
			for(int x=0;x<count-1;x++) {
				list.add(money);
			}
			//最后一份红包加入了剩余的钱放入集合
			list.add(money+mon);
		}
		
		return list;
	}

收红包子类son

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

public class Son extends PublicSpace{
	public Son() {}//构造方法
	public Son(String name, double yue) {
		super(name, yue);
	}
	//收红包的方法
	public void receive(ArrayList<Double> list) {
		if(list.size()==0) {
//			System.out.println("群主穷逼,钱不够发红包");
			return;
		}
		//随机生成一个数  将这个数作为集合的脚标来抽取红包
		int s=new Random().nextInt(list.size());
		//从集合中删除一个元素 并返回被删除的元素
		double c=list.remove(s);
		//重新对用户的余额进行更改
		double q=super.getYue();
		
		super.setYue(q+c);
			
		
	}

测试类Test

import java.util.ArrayList;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Manager m=new Manager("陈一发", 510.0);
		Son s1=new Son("迪丽热巴", 0);
		Son s2=new Son("张三", 0);
		Son s3=new Son("李四", 0);
		Son s4=new Son("王五", 0);
		Son s5=new Son("尼古拉斯", 0);
		//发红包  
		ArrayList<Double> list=m.send(511, 5);
		
		//收红包  
		s1.receive(list);
		s2.receive(list);
		s3.receive(list);
		s4.receive(list);
		s5.receive(list);
		//显示每个人的余额
		m.show();
		s1.show();
		s2.show();
		s3.show();
		s4.show();
		s5.show();
				
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值