模拟微信红包将任意金额分成指定数量的红包输入红包总金额最大500元:5java实现输入红包数量:5【149007039148157】
以下是Java代码实现:
import java.util.Random; import java.util.Scanner;
public class RedPacketDemo { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入红包总金额(最大500元):"); double totalMoney = input.nextDouble(); System.out.print("请输入红包数量:"); int num = input.nextInt(); double[] redPacket = divideRedPacket(totalMoney, num); System.out.print("["); for (int i = 0; i < redPacket.length; i++) { System.out.printf("%.2f", redPacket[i]); if (i != redPacket.length - 1) { System.out.print(","); } } System.out.print("]"); }
public static double[] divideRedPacket(double totalMoney, int num) {
Random random = new Random();
double[] redPacket = new double[num];
double leftMoney = totalMoney;
int leftNum = num;
for (int i = 0; i < num - 1; i++) {
double money = random.nextDouble() * (leftMoney / leftNum * 2 - 0.01) + 0.01;
redPacket[i] = money;
leftMoney -= money;
leftNum--;
}
redPacket[num - 1] = leftMoney;
return redPacket;
}
}
代码思路解析:
-
首先通过Scanner类获取用户输入的红包总金额和红包数量。
-
调用divideRedPacket()方法进行红包的分配,该方法返回一个double类型的数组,数组长度为红包数量。
-
在divideRedPacket()方法中,首先创建一个Random类的对象,用于生成随机金额。
-
定义一个double类型的数组redPacket,用于存储每个红包的金额。
-
定义两个变量leftMoney和leftNum,分别表示剩余的金额和剩余的红包数量。
-
使用for循环遍历红包数量,每次生成一个随机金额,并将其存入红包数组中。
-
计算剩余的金额和红包数量,最后将剩余的金额赋值给最后一个红包。
-
最后将分配好的红包金额数组返回。
-
在主方法中,使用for循环遍历红包金额数组,输出每个红包的金额。注意格式化输出,保留两位小数并使用逗号分隔。
-
运行程序,输入红包总金额和红包数量,程序会输出分配好的红包金额数组。
原文地址: https://www.cveoy.top/t/topic/brUT 著作权归作者所有。请勿转载和采集!