教你用java作個微信紅包,本身作運氣王!

java微信紅包

微信是現在人們平常生活離不開的app,平常交流,小額轉帳,視頻通話等都很方便。
教你用java作個微信紅包,本身作運氣王!
微信紅包也是人們使用得最多的功能,朋友一塊兒出去吃個飯,飯後AA用微信紅包;逢年過節,給親朋好友發個紅包……
教你用java作個微信紅包,本身作運氣王!
這篇文章教你用java作個紅包小項目!
注意事項
由於金額涉及到分,小數點後保留兩位,數值類型的轉換操做須要注意;
此中方案相對簡陋,並未實現每次紅包最大值在0.01-剩餘紅包均值的2倍間;
/*java

  • 紅包設計要求:
  • 1-紅包最小值爲0.01,最大值爲200
  • 2-紅包的金額面值爲小數點後兩位
  • 3-避免單個紅包數值太大,經過係數設定
  • 4-紅包總量知足金額數
  • */public class RedPacketUtil {
    //微信紅包的最大值和最小值,和最大紅包金額係數
    private static final float MINMUM = 0.01f;
    private static final float MAXMUM = 200.00f;
    private static final float TIMES = 2.1f;微信

    //判斷當前金額和數量是否正確
    public boolean isRight(float money,int count){
    //計算當前平均值
    float ave = (float)money / count;
    if(ave < MINMUM){
    return false;
    }else if(ave > MAXMUM){
    return false;
    }
    return true;
    }app

    //生成每一個具體紅包的金額
    public float redPacket(float money, float min, float maxs, int count) {
    //判斷當前人數
    if(count == 1){
    //確保紅包不小於0.01元
    money = money > MINMUM ? money : MINMUM;
    return (float)(Math.round(money 100)) / 100;
    }
    float max = maxs > money ? money : maxs;
    //生成單個紅包數量,且保證紅包的精度
    float one = (float) (Math.random()
    (max - min) + min);
    one = (float)(Math.round(one * 100)) / 100; dom

    float moneyRest = (money - one);
    
    //判斷當前紅包數量是否合理
    if(isRight(moneyRest,count - 1)){
        return one;
    }else{
        //從新分配紅包
        float ave = (float)moneyRest / (count-1);
        if(ave < MINMUM){
            return redPacket(money,min,one,count);
        }else if(ave > MAXMUM){
            return redPacket(money,one,max,count);
        }
    }
    return one;

    }ide

    //拆分成包,生成具體的紅包數
    public List<Float> splitRedPacket(float money,int count){
    //判斷當前金額和數量是否正確
    if(!isRight(money,count)){
    return null;
    }
    //記錄每一個紅包的數量
    List<Float> rpList = new ArrayList<Float>();
    //單個紅包的最大金額
    float max = (float)(money * TIMES)/ count ;
    max = max > MAXMUM ? MAXMUM : max;
    float one = 0;
    //開始記錄每一個紅包的數量
    for(int i = 0;i < count;i++){
    one = redPacket(money,MINMUM,max,count-i);
    rpList.add(one);
    money = money - one;
    }
    return rpList;
    }設計

    public static void main(String[] args) {
    RedPacketUtil util = new RedPacketUtil();
    List<Float> result = util.splitRedPacket(200, 10);
    System.out.println(result);
    //驗證金額總數
    float sum = 0;
    for(float i : result){
    sum = sum + i;
    }
    System.out.println(sum);
    }}
    教你用java作個微信紅包,本身作運氣王!code

相關文章
相關標籤/搜索