微信红包问题

微信红包问题

题目描述

封装一个微信红包类,主要的功能有
红包中存有钱,多少个人分;每个分到的钱数,及获收红包的时间;
主要的功能有
打开红包;(如果打开红包的人数没有达到上限,则可以打开,并随机获得金额)
查看红包分配信息;
设置截止日期;(如果超过最大金额,则再打时提示过期)
提示:
	例如红包中的钱数为500;分成10个包
	在1到499之间产生9个不重复的值,并排序即可;

代码

抢红包的人的类

import org.jetbrains.annotations.NotNull;

public class People implements Comparable<People>{
    String name;//姓名
    int money;//该人物抢到金额
    String date;//获得红包时的时间

    public People(String name, String date) {
        this.name = name;
        this.date = date;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getMoney() {
        return money;
    }

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

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public People(String s, int money, String name) {
        this.name = name;
    }


    @Override
    public int compareTo(@NotNull People o) {
        return (int)(o.getMoney()-this.getMoney());
    }
}

红包类


import java.text.SimpleDateFormat;
import java.util.*;


public class Money {
    private  int amount;//红包总金额
    private Date date;//截止时间
    private int n;//红包个数
    private  int leftmoney;//剩余红包金额

    SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
    Random r=new Random();

    public Money(int amount, int n) {
        this.amount = amount;
        this.n=n;
        leftmoney=amount;
        make();
        getmoney();
    }

    List<People> peo=new ArrayList<People>();
    Set<Integer> set=new TreeSet<Integer>();
    List<Integer> list1=new ArrayList<Integer>();


    void make(){
        set.add(0);
        set.add(this.amount);

        while(set.size()<n+1){
            set.add(r.nextInt(leftmoney-1)+1);
        }
        list1.addAll(set);
    }

    void show(){
        Collections.sort(peo);
        for(int i=0;i<n;i++){
            System.out.println(peo.get(i).getName()+" "+peo.get(i).getMoney()+" "+peo.get(i).getDate());
        }
    }

    void getmoney(){
        for(int i=0;i<this.n;i++){
            Date date = new Date(System.currentTimeMillis());
            //peo.get(i).setMoney(100);
            String name="第"+(i+1)+"个人";
            peo.add(new People(name,formatter.format(date)));
            peo.get(i).setMoney(list1.get(i+1)-list1.get(i));
        }
    }



}

测试


import java.util.*;
public class Test {

    public static void main(String[] args)  {

        Money money=new Money(100,5);
        money.show();

    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我的大男子主义

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

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

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

打赏作者

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

抵扣说明:

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

余额充值