请实现一个红包算法,支持输入红包金额(元为单位)和红包个数,输出各个红包金额。提供完备单元测试
要求:
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);
}
}
随机生成红包
最新推荐文章于 2023-01-12 15:10:19 发布