随机生成红包

请实现一个红包算法,支持输入红包金额(元为单位)和红包个数,输出各个红包金额。提供完备单元测试
要求:
1. 每个红包的最大金额不能超过红包金额的90%,最低不能低于1%40分)
2. 输入的红包金额只支持整数,输出的每个红包的结果需要支持到分(小数点后两位

 public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int money;
        while (true){
            try {
                System.out.println("请输入金额【单位元 且为整数】: ");
                money = scanner.nextInt();
                break;
            }catch (Exception e){
                System.out.println("Error,请输整数");
                scanner.next();
            }
        }


        int count ;
        while (true){
            try {
                System.out.println("请输入个数额【整数】: ");
                count = scanner.nextInt();
                if (count <= 1){
                    System.out.println("Error, 数量 > 1");
                }else {
                    break;
                }

            }catch (Exception e){
                System.out.println("Error,请输整数");
                scanner.next();
            }
        }
        int counts = count;

        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        float[] moneys = new float[count];

        float moneyCount = 0;
        while (counts > 0){
            float oneMoney;
            if (counts == 1){
                oneMoney = money - moneyCount;
                oneMoney = Float.valueOf(decimalFormat.format(oneMoney));
            }else {
                String format = decimalFormat.format(Math.random() * money);
                oneMoney = Float.valueOf(format);
            }

            if (oneMoney <= money * 0.9 && oneMoney >= money * 0.01){
                moneys[counts - 1] = oneMoney;
                moneyCount += oneMoney;
                counts--;
            }else if(counts == 0 && moneyCount != money){
                counts = count;
                moneyCount = 0;
            }
        }
        for (float v : moneys) {
            System.out.println(v);
        }


    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值