当前位置: 首页 > news >正文

郑州市二七建设局网站/跨境网站建站

郑州市二七建设局网站,跨境网站建站,免费搭建个人网页,徐州网站推广目录 群发普通红包 流程图 MainRedPacket类 Manager类 Member类 User类 群发普通红包 题目介绍 某软件有多名用户(User类),某群聊中有群主(Manager类)和多名普通成员(Member类)&#x…

目录

群发普通红包

流程图 

MainRedPacket类

Manager类

Member类

User类


群发普通红包

题目介绍

某软件有多名用户(User类),某群聊中有群主(Manager类)和多名普通成员(Member类),现群主大方给成员发红包。红包的规则:群主发一笔金额,从群主余额中扣除,红包分配方式有两种:1普通红包:平均分成n等份给成员。2随机红包:随机红包大小分配给成员。成员拿到红包后,保存到成员余额中,最后并显示每个人抢到了多少红包。

流程图 

运行效果图 

MainRedPacket类

 这个类的作用有

第一创造对象 并确定人的名字然后初始的余额

第二输入选择发多少钱 注意不能大于余额

第三选择是平均还是随机发

然后调用函数来执行对应的方法

最后输出

package 练习.week9.T5;
import java.util.ArrayList;
import java.util.Scanner;
public class MainRedPacket {public static void main(String[] args) {int fenfa;int cont;Scanner scanner = new Scanner(System.in);Manager manager = new Manager("群主",10000);Member one = new Member("1",0);Member two = new Member("2",0);Member three = new Member("3",0);Member four = new Member("4",0);Member five = new Member("5",0);System.out.println("======抢红包钱=======");one.show();two.show();three.show();four.show();five.show();//发多少钱System.out.println("发多少钱");fenfa=scanner.nextInt();System.out.println("什么方式发");cont=scanner.nextInt();if(cont==1){System.out.println("=============金主发了"+fenfa+"大红包拉================");ArrayList<Double> redList = manager.sent(fenfa,5);//成员收红包one.receive(redList);two.receive(redList);three.receive(redList);four.receive(redList);five.receive(redList);}else {//调用方法Manager manager1 = new Manager();manager1.RedEnvelope(fenfa,5);ArrayList<Double> redList = manager1.redList;//成员收红包one.receive(redList);two.receive(redList);three.receive(redList);four.receive(redList);five.receive(redList);}//输出one.show();two.show();three.show();four.show();five.show();}
}

Manager类

这个是一个关键类

其中第一个sent方法的作用为平均分发这是平均的算法然后放入集合方便下一步随机用户抢红包

但是这样最后一个人会抢的多因为如果除不尽的话会把剩下的放入最后

       int avg = totalMoney / count;
        int mod = totalMoney % count; 

 第二个RedEnvelope方法的作用是随机分发这是平均刷法 因为要保证每个人都要抢到钱所以要设置最小值为0.01 然后余额减去随机生成的数 然后最后剩下的给最后放入集合

String money = formatter.format(random.nextDouble() * (Max - Min) + Min);
            //将String类转换为double类,修改Max的值
            Max = Double.valueOf(formatter.format(Max - Double.valueOf(money)));

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Random;//群主的类
public class Manager extends User {public Manager(){}public Manager(String name, int money) {super(name, money);}
public ArrayList<Double> redList = new ArrayList<>();public ArrayList<Double> sent(int totalMoney, int count){//平均分//储若干个红包金额//首先看一下自己有多少钱double leftMoney = super.getMoney();if (totalMoney > leftMoney) {System.out.println("余额不足");return redList; //返回空}//重新设置余额super.setMoney(leftMoney - totalMoney);//发红包需要平均拆分成为count份int avg = totalMoney / count;int mod = totalMoney % count; //除不尽的情况//除不开的零头,包在最后一个红包当中//下面把红包一个个放到集合当中for (int i = 0; i < count - 1; i++) {System.out.println("第"+i+"个红包"+avg);redList.add((double)avg);}//最后一个红包double last = avg + mod;System.out.println("最后一个红包"+last);redList.add(last);return redList;}public void RedEnvelope(double moneySum,int redNum) {//随机分double Min=0.01;//最小金额double Max=moneySum;//记录余额double zhuan;Random random=new Random();NumberFormat formatter = new DecimalFormat("#.##");//数字格式化成小数点后2位for(int i=1;i<redNum;i++) {//随机生成Min到Max的随机数并规范到2位小数,是String类String money = formatter.format(random.nextDouble() * (Max - Min) + Min);//将String类转换为double类,修改Max的值Max = Double.valueOf(formatter.format(Max - Double.valueOf(money)));System.out.println("第"+i+"个红包:"+money+"元");zhuan=Double.parseDouble(money);redList.add(zhuan);}System.out.println("第"+redNum+"个红包:"+Max+"元");redList.add(Max);}
}

Member类

 

这个类的作用是receive方法读取前面的集合数据然后用户调用这个方法来随机获取集合里面的元素相当于抢红包

import java.util.ArrayList;
import java.util.Random;
//普通成员的类
public class Member extends User{public Member() {}public Member(String name, int money) {super(name, money);}public void receive(ArrayList<Double> list){//随机获取一个集合当中的索引编号int index = new Random().nextInt(list.size());double dalta = list.remove(index);//当前成员自己本来有多少钱double money = super.getMoney();//加法,并且从新设置回去super.setMoney((money + dalta));}
}

User类

 这个类的作用是定义成员的名字和余额 然后等待前面的程序执行完成时候用户调用show方法来输出抢红包之后余额一共有多少钱

//用户类
public class User {private String name;private double money; //余额public User() {}public User(String name, double money) {this.name = name;this.money = money;}//展现一下当前用户有多少钱public void show(){System.out.println("我叫:" + name + ",我有多少钱:" + money);}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}
}
http://www.jmfq.cn/news/5202811.html

相关文章:

  • 郴州网站建设推广服务/站群seo
  • 长沙市网站建设/化工网站关键词优化
  • 适合做浏览器主页的网站/营销策划方案ppt模板
  • 美国对华为进行网络窃密/百度搜索引擎优化案例
  • 式网站/福州seo推广公司
  • 天空台108网站找手工活带回家做/sem广告投放是做什么的
  • 青县网站建设公司/郑州官网网站推广优化
  • 王占军/京东seo搜索优化
  • 网站logo名词解释/上海优化公司有哪些
  • wap网站开发协议/知名品牌营销案例100例
  • 做网站最烂公司/香港百度广告
  • 一级a做爰片免费网站孕交视频教程/杭州百度推广公司有几家
  • 阿里巴巴的网站怎么做/搜索引擎优化培训免费咨询
  • 可以做兼职的网站/石嘴山网站seo
  • 做一个网站要注意什么东西/百度指数网页版
  • wordpress 评论已关闭/公司网站如何seo
  • 学做土建资料员的网站/专业的制作网站开发公司
  • 菜鸟做网站/怎么注册域名
  • 江苏做网站怎么收费多少/小说推广接单平台
  • 屏山县建设招标网站/现在做推广的新渠道有哪些
  • 淄博外贸网站建设公司/广州seo网站营销
  • 网站建设公司广东/上海牛巨微seo
  • 城市建设鹤岗市网站/交换友情链接前后必须要注意的几点
  • 垃圾桶东莞网站建设/网站推广策划案
  • 用eclipse做网站开发/苏州seo关键词优化方法
  • 品牌包包都有哪些牌子/厦门seo网站排名优化
  • 投资集团网站建设/如何创建公司网站
  • 介绍好的电影网站模板下载/合作seo公司
  • 企业网站怎么做/咸阳seo
  • 建个网站需要多少钱圣宝电动车大架号在哪里/大数据培训班出来能就业吗