微信红包java(小项目)11.17

一个案例-微信红包java(小项目)

Case 1:均分红包

  • 群主发一笔钱,他的余额就会少相应的钱
  • 这些钱分成n等份
  • n个人抢
  • 每个人 的余额相应变多
  • 显示余额
    相对简单代码省略。有需要请留言。(其实直接在手气红包自己改就可以)

Case 2:手气红包

  • 群主发一笔钱,他的余额就会少相应的钱
  • 这些钱不等的分成n等份
  • n个人抢
  • 每个人 的余额相应变多
  • 显示余额

ps:这个部分的算法用的是知乎老哥的算法
在这里插入图片描述
主程序:

package hongbao;

import java.sql.SQLOutput;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class maain {
    public static void main(String[] args) {
        Faqianren fa = new Faqianren(100);
        Shouqian sh = new Shouqian(100);
        System.out.println("输入你要发的金额:");
        double mon = (float) new Scanner(System.in).nextFloat();
        System.out.println("输入要发几个人:");
        int pepole =  new Scanner(System.in).nextInt();
        Random r = new Random();
        double sum = 0;
        int remainp = 0;
        double max =0.0;
        double remianq = mon;
        double he =0.0;
        //  float avmon = mon/7;//平均分配
        double[] list = new double[pepole];
        for (int i = 0; i < pepole-1; i++) {
            remainp = pepole-i;
            max= remianq /remainp *2;
            double re = r.nextDouble();
            list[i] = re * max+0.01;
            sum = sum + list[i];
            remianq = mon -sum;
        }

        list[pepole-1] = mon - sum;
        if (mon >= 0) {
            fa.zhichu(mon);
            if (fa.bz) {
                System.out.println("群主发了:" + mon);
                System.out.println("群主还剩下 " + fa.getYu() + " RMB");
                for (int i = 0; i < pepole; i++) {
                    if (list[i] >= 0) {
                        // fa.zhichu(mon);
                        if (fa.bz) {
                            //  System.out.println("send:" + mon);
                            //  System.out.println("群主还剩下 " + fa.getYu() + " RMB");
                            sh.shouru(list[i]);
                            System.out.println(i+"  号抢到:" + list[i]+"元");
                            //    System.out.println(i + " 号还剩下 " + sh.getYu() + " RMB");
                        }
                    } else {
                        System.out.println("????????");
                    }
                }
                for (int i = 0; i < list.length; i++) {
                    he = he + list[i];
                }
                System.out.println("运气王收到了:"+MAX(list));
                System.out.println("所有的人收到的钱总和为:"+he);
            }
        } else {
            System.out.println("????????");
        }

    }
    public static double MAX(double[] arr) {
        Arrays.sort(arr);
        return arr[arr.length-1];
    }
}

下面是各个类:
1.发钱人(faqianren)

package hongbao;

public class Faqianren extends Zhifubao {
    public Faqianren(double yu) {
        super(yu);
    }
}

2.收钱人(shouqianren)

package hongbao;

public class Shouqian extends Zhifubao{
    public Shouqian(double yu) {
        super(yu);
    }
}

3.支付宝(zhifubao)

package hongbao;

public class Zhifubao {
    private double yu;
    boolean bz;
    public Zhifubao() {
    }
    public Zhifubao(double yu) {
        this.yu = yu;
    }
    public void zhichu(double send){
        if (this.yu>=send&&send>=0){
            this.yu = this.yu-send;
            this.bz = true;
        }else {
            System.out.println("余额不足");
            this.bz = false;
        }
    }
    public void shouru(double geet){
        if (geet>0){
            this.yu = this.yu +geet;
        }else {
            System.out.println("疯了?");
        }
    }
    public double getYu() {
        return yu;
    }
}

一个小case,和我看的视频教程上老师写的不太一样,老师的思路很简单清晰,我写复杂了,不过是自己写的哈哈。
好几天没学了,忙着写论文,今天写个小case,11.17!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值