zoukankan      html  css  js  c++  java
  • 抢红包

    群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则:

    1. 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。

    2. 成员领取红包后,保存到成员余额中。

    /**
    * 用户类
    */
    public class User {
    private String username;
    private double leftMoney;

    public User() {
    }

    public User(String username, Integer leftMoney) {
    this.username = username;
    this.leftMoney = leftMoney;
    }

    public String getUsername() {
    return username;
    }

    public void setUsername(String username) {
    this.username = username;
    }

    public Double getLeftMoney() {
    return leftMoney;
    }

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

    public void show(){
    System.out.println("用户名:"+username+" 余额为:"+leftMoney);
    }
    }


    /**
    * 群主类,发红包的人
    */
    public class Qunzhu extends User{
    public Qunzhu() {
    }

    public Qunzhu(String username, Integer leftMoney) {
    super(username, leftMoney);
    }
    /*      群主发红包,就是把一个整数的金额,分层若干等份。
              1.获取群主余额,是否够发红包.
              不能则返回null,并提示. 
                能则继续. 
                2.修改群主余额. 
            3.拆分红包.
              3.1.如果能整除,那么就平均分。
              3.2.如果不能整除,那么就把余数分给最后一份。
              */
    public ArrayList<Double> send(int money,int count){
    Double leftMoney = getLeftMoney();
    if (money>leftMoney){
    return null;
    }
    setLeftMoney(leftMoney-money);
    ArrayList<Double> list= new ArrayList<>();
    money=money*100;
    // 每份的金额
    int m = money/count;
    //不能整除的余数
    int l=money%count;
    //无论是否整除,n‐1份,都是每份的等额金额
    for (int i = 0; i <count-1 ; i++) {
    list.add(m/100.0);
    }
    //能整除,最后一份也是m
    if(l==0){
    list.add(m/100.0);
    }else{//不能整除,最后一份等于m+l
    list.add(m/100.0+l);
    }
    return list;
    }
    }

    /**
    * 成员类,抢红包的人
    */
    public class Member extends User {
    public Member() {
    }

    public Member(String username, Integer leftMoney) {
    super(username, leftMoney);
    }

    //抢红包方法
    public void OpenHongbao(ArrayList<Double> list){
    Random r = new Random();
    int i = r.nextInt(list.size());
    Double money = list.get(i);
    list.remove(i);
    setLeftMoney(getLeftMoney()+money);
    }
    }
    测试类

    /**
    * 群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则:
    1. 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。
    2. 成员领取红包后,保存到成员余额中。
    请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作
    */
    public class ExtendsTest02 {
    public static void main(String[] args) {
    Qunzhu qz = new Qunzhu("群主", 500);
    Scanner in = new Scanner(System.in);
    System.out.println("输入红包总金额:");
    int money = in.nextInt();
    System.out.println("输入红包个数:");
    int conut = in.nextInt();
    //发红包
    ArrayList<Double> list = qz.send(money, conut);
    if (list==null){
    System.out.println("余额不足!");
    return;
    }
    Member m1 = new Member("成员1",100);
    Member m2 = new Member("成员2",100);
    Member m3 = new Member("成员3",100);
    m1.OpenHongbao(list);
    m2.OpenHongbao(list);
    m3.OpenHongbao(list);
    qz.show();
    m1.show();
    m2.show();
    m3.show();
    }
    }





  • 相关阅读:
    通过使用精简客户端,且不需要安装的客户端,配合PLSQL连接oracle数据库
    JDBC连接
    多线程TCP的socket通信
    基于UDP协议的socket通信
    基于TCP协议的socket通信
    设计模式之单例模式
    设计模式之代理模式
    设计模式之策略模式
    >hibernate-session中的方法
    >hibernate的四种状态
  • 原文地址:https://www.cnblogs.com/lifengSkt/p/13261958.html
Copyright © 2011-2022 走看看