如何用Java实现一个微信抢红包的过程呢?

Main.java

package redEnvelope;import java.util.Scanner;public class Main {public static void main(String[] args) {//红包金额和人数double money = 0;int people = 0;System.out.println("请输入红包的大小和人数");Scanner reader = new  Scanner(System.in);money = reader.nextDouble();people = reader.nextInt();//保证每人至少一分钱while((money<(people*RandomRedEnvelope.minMoney)) || (people <= 0)){System.out.println("输入金额或人数不支持!请重新输入红包的大小和人数:");money = reader.nextDouble();people = reader.nextInt();}//构建一个抢红包实例RandomRedEnvelope randomRedEnvelope = new RandomRedEnvelope(money, people);System.out.printf("%.2f红包已被%d个人抢完,结果如下:\n", money, people);showProgress(randomRedEnvelope);}public static void showProgress(RandomRedEnvelope randomRedEnvelope){while(randomRedEnvelope.remainPeople>0){double money = randomRedEnvelope.giveMoney();System.out.printf("%.2f\t",money);}}
}

RedEnvelope.java

package redEnvelope;public abstract class RedEnvelope {public double remainMoney;      //红包当前金额public int remainPeople;        //抢红包的人数public abstract double giveMoney();     //抢红包方法
}

RandomRedEnvelope.java

package redEnvelope;
import java.util.Random;public class RandomRedEnvelope extends RedEnvelope{     //随机红包double money = 0;       //最后用户得到的金额int randomMoney = 0; //系统随机产生的金额public static double minMoney = 0.01;        //设置红包最小金额为1分钱int integerRemainMoney;  //红包当前金额用分表示int integerMinMoney;     //红包最小金额用分表示RandomRedEnvelope(double remainMoney, int remainPeople){//设置红包的大小,抢的人数,每人至少抢到的金额this.remainMoney = remainMoney;this.remainPeople = remainPeople;integerRemainMoney = (int)remainMoney*100;integerMinMoney = (int)(minMoney*100);}public double giveMoney(){//重写抽象方法中抢红包实例if(remainPeople == 1){money = remainMoney;remainPeople--;return money;}Random random = new Random();randomMoney = random.nextInt(integerRemainMoney);//如果随机产生的钱太小,那这个红包的钱就是一分if(randomMoney < integerMinMoney){randomMoney = integerMinMoney;}//剩余用来抢的钱int leftOtherPeopleMoney = integerRemainMoney - randomMoney;//其他人至少能得到的钱int otherPeopleNeedNoney = integerMinMoney*(remainPeople-1);if(leftOtherPeopleMoney < otherPeopleNeedNoney){randomMoney -= (otherPeopleNeedNoney - leftOtherPeopleMoney);}integerRemainMoney -= randomMoney;remainMoney = (double)(integerRemainMoney/100.0);remainPeople--;money = (randomMoney/100.0);return money;}
}

Java应用_模拟微信抢红包相关推荐

  1. 模拟微信抢红包demo,生成随机数

    文章目录 概述 随机数方法方法 Math.random()方法 Random类 抢红包!! 概述 经常抢红包会发现,很大的概率是在一开始得时候抢的红包越大,越靠后越小(大概率是这种情况,这是我的经验之 ...

  2. java模拟微信抢红包金额算法规则二倍均值法模拟(满满的注释)

    二倍均值法模拟微信抢红包金额算法规则 ```java /*** 二倍均值法* @param amount 总金额* @param min 最小金额* @param num 个数* 本帖只提供思路,实际 ...

  3. 用python语言模拟微信红包_python 模拟微信抢红包 基础语法实现demo

    1.实现微信抢红包 简易demo版 : 代码如下: from decimalimport Decimal # 提供了随机方法 import random print('$$$$$$weichat模拟微 ...

  4. c语言多线程-模拟微信抢红包

    一.背景 想法源于微信.QQ.蓝信抢红包的热情,内部是怎么实现分配处理的呢? 对于单机的情况,是否可以使用多线程去模拟多个用户同时去抢红包? 二.相关知识 大概查找了一下相关的资料[1][2],我理解 ...

  5. Java模拟微信抢红包

    import java.util.Scanner; import java.util.Random;public class RedBags{public static void main(Strin ...

  6. matlab程序模拟微信抢红包,js仿微信抢红包功能

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 仿微信抢红包 html,body,div{margin:0;padding:0;} body{background ...

  7. matlab程序模拟微信抢红包,js模拟微信抢红包算法的讨论

    春节在家无聊,抢红包的时候想起来,不如自己写一个微信抢红包算法来练练手.本以为是非常简单的一个事情,但真正写下来也算是一波三折,不禁感叹,在程序员的路上,我还是太嫩了啊!写这篇文章的原因也是想与广大网 ...

  8. c++代码模拟微信抢红包算法,没人抢得过你!

    算法说明: 微信抢红包基本功能为:提示输入红包总金额和红包份数,保证每个红包的金额随机且不为0,每个红包的金额差距不能太大. 下面是一份C/C++学习资料,加小编C/C++学习群:825414254, ...

  9. 拆红包robmoney.java,android 模拟微信抢红包 实例源码下载

    [实例简介]需要 开启该应用的 辅助功能 [实例截图] [核心代码] package krelve.demo.rob; import java.util.List; import android.ac ...

最新文章

  1. [转贴]NIOS II 软核中EPCS配置芯片的存储操作
  2. 冇内容管理系统分析-[JS]详尽解析window.event对象
  3. Windows 7/8.1 仍可免费升级至 Windows 10
  4. 24继承父类并实现多个接口
  5. 第6章 数据存储全方案,详解持久化技术
  6. spring配置详解-属性注入(p名称空间SPEL表达式)
  7. java基础——枚举
  8. 最新Linux教程发布下载【最后更新4月12日
  9. C/C++:Windows获取电脑机器指纹
  10. A Byte of Python 笔记(12)python 标准库:sys、os,更多内容
  11. flutter text 左对齐_【Flutter学习】基本组件之文本组件Text
  12. linux 网络编程
  13. MVPArms官方快速组件化方案开源,Android快速开发之架构组件
  14. 电磁场理论复习笔记-第一章(上)
  15. C语言怎样求矩阵上三角乘积,C语言经典算法 - 上三角、下三角、对称矩阵
  16. java b s用户管理系统_基于B/S的教务信息管理系统
  17. 像素字体 pixel font 入门
  18. Android性能优化——启动优化简述
  19. 机器人学导论(一)——空间描述和变换
  20. 如何查询计算机com口使用

热门文章

  1. docker之nginx镜像优化4
  2. Java NIO 学习:通道(Channel)
  3. img图片加载失败时的处理
  4. 关于Cisco路由器配置DHCP全面详解
  5. PinnedSectionListView原理完全透析
  6. 在HBuilder创建前端web项目时,图片加载不出来,怎么解决?
  7. o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
  8. Linux CentOS 8常见命令
  9. app自动化测试——app自动化控制、常见控件定位方法
  10. linux世界里类似source insight的工具(zz)-如梦初醒-中国教育人博客