zoukankan      html  css  js  c++  java
  • 发红包案例(普通红包和随机红包)

     1 package Red;
     2 
     3         import java.util.ArrayList;
     4         import java.util.Random;
     5 
     6 /*理论上,每一个成员都有发红包和抢红包的权力,
     7   直接将其写在member类中*/
     8 public class Member {
     9 
    10     private String name;    //用户姓名
    11     private double money;   //用户金额
    12 
    13     public Member() {
    14     }
    15 
    16     public Member(String name, double money) {
    17         this.name = name;
    18         this.money = money;
    19     }
    20 
    21     public String getName() {
    22         return name;
    23     }
    24 
    25     public void setName(String name) {
    26         this.name = name;
    27     }
    28 
    29     public double getMoney() {
    30         return money;
    31     }
    32 
    33     public void setMoney(double money) {
    34         this.money = money;
    35     }
    36 
    37     public void show() {
    38         System.out.println(getName() + " " + String.format("%.2f", getMoney()));
    39     }
    40 
    41     //发普通红包
    42     public ArrayList<Integer> sendCommon(int sendmoney, int count) {
    43         ArrayList<Integer> list = new ArrayList<>();
    44         if (getMoney() < sendmoney) {
    45             System.out.println("账户余额不足");
    46             return list;
    47         }
    48         setMoney(money - sendmoney);    //设置发红包后的金额
    49         int avg = sendmoney / count;    //红包的平均金额
    50         int mod = sendmoney % count;    //红包的零头金额
    51         for (int i = 0; i < count - 1; i++) {
    52             list.add(avg);              //将金额放到数组list中
    53         }
    54         list.add(avg + mod);            //将最后的零头也放进去
    55         return list;
    56     }
    57 
    58     public void receiveCommon(ArrayList<Integer> list) {
    59         Random random = new Random();
    60         int index = random.nextInt(list.size());    //随机生成一个随机数,从list数组中取出
    61         int getmoney = list.remove(index);
    62         setMoney(getmoney + getMoney());                 //设置抢红包后的金额
    63     }
    64 
    65     public ArrayList<Double> sendRandom(double sendmoney, int count) {
    66         ArrayList<Double> list = new ArrayList<>();
    67         Random random = new Random();
    68         if (money < sendmoney) {
    69             System.out.println("账户余额不足");
    70             return list;
    71         }
    72         setMoney(getMoney() - sendmoney);
    73         //方便取随机数,余额一般只有两位有效数字,此时sendmoney相当于int类型
    74         sendmoney = sendmoney * 100;
    75         //开始随机出抢的金额,要求是最低不低于0.01元,最高不超过平均值的2倍
    76         for (int i = 0; i < count - 1; i++) {
    77             int randommoney = random.nextInt((int) sendmoney) + 1;    //生成随机金额
    78             while (randommoney <= 1 || randommoney >= 2 * (sendmoney / count)) {    //没有强制类型转化也没报错
    79                 randommoney = random.nextInt((int) sendmoney) + 1;    //保证在范围内
    80             }
    81             list.add((double)randommoney);
    82             sendmoney = (int)sendmoney - randommoney;   //控制下次随机金额
    83         }
    84         list.add((double) sendmoney);       //最后的钱直接增加进去
    85         return list;
    86     }
    87 
    88     public void receiveRandom(ArrayList<Double> list) {
    89         Random random = new Random();
    90         int index = random.nextInt(list.size());    //生成一个随机序号
    91         double getmoney = list.remove(index);       //获取数组list中的金额
    92         getmoney = getmoney / 100;
    93         setMoney(getmoney + getMoney());                 //抢红包后的金额
    94     }
    95 }
     1 package Red;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Scanner;
     5 
     6 public class demo1main {
     7     public static void main(String[] args) {
     8         System.out.println("选择以下发红包的种类:");
     9         System.out.println("1.普通红包       2.拼手气红包");
    10         Scanner scanner = new Scanner(System.in);
    11         int num = scanner.nextInt();
    12         while (num != 1 && num != 2) {
    13             System.out.println("请输入正确格式,数字1或2");
    14             num = scanner.nextByte();
    15         }
    16 
    17         Member member1 = new Member("张三", 100);
    18         Member member2 = new Member("李四", 20);
    19         Member member3 = new Member("王五", 20);
    20         Member member4 = new Member("赵六", 20);
    21         ArrayList<Integer> listcommon = new ArrayList<>();
    22         ArrayList<Double> listrandom = new ArrayList<>();
    23         if (num == 1) {
    24             //使用普通红包的步骤
    25             listcommon = member1.sendCommon(20, 3);
    26             for (int i = 0; i < listcommon.size(); i++) {
    27                 System.out.println(listcommon.get(i));
    28             }
    29             member2.receiveCommon(listcommon);
    30             member3.receiveCommon(listcommon);
    31             member4.receiveCommon(listcommon);
    32 
    33             member1.show();
    34             member2.show();
    35             member3.show();
    36             member4.show();
    37 
    38         } else {
    39             //使用拼手气红包的步骤
    40             listrandom = member1.sendRandom(20, 3);
    41 
    42 
    43             member2.receiveRandom(listrandom);
    44             member3.receiveRandom(listrandom);
    45             member4.receiveRandom(listrandom);
    46             member1.show();
    47             member2.show();
    48             member3.show();
    49             member4.show();
    50         }
    51     }
    52 }
  • 相关阅读:
    day35作业
    进程的初识
    day34作业
    python中的文件
    python字典概述
    python中的深拷贝与浅拷贝
    python的元组和列表使用之一
    Python基本数据类型
    python的编码
    windows中安装python
  • 原文地址:https://www.cnblogs.com/aoligei/p/12421013.html
Copyright © 2011-2022 走看看