package data0926;
import java.text.DecimalFormat;
import java.util.Scanner;
public class RedPaper {
static Scanner scanner=new Scanner(System.in);
static float sum; //红包总金额
static int person; //接受红包的人数
static float paperMoney; //每个随机红包的金额
static float avg=0; //平均金额
public static void main(String[] args) {
input();
red(sum,person);
}
private static void input() {
System.out.println("请输入红包总金额");
sum=scanner.nextFloat();
while(sum<0.01) { //若用户输入的红包金额小于0.01,则让用户一直输入
System.out.println("大哥,别闹,最小红包金额要大于0.01");
System.out.print("请重新输入红包总金额: ");
sum=scanner.nextFloat();
}
System.out.println("请输入人数");
person=scanner.nextInt();
while(person<1) { //红包的数量最少是一个,若用户输入的不正确,则让用户一直输入
System.out.println("大哥,请不要侮辱本程序");
System.out.print("请重新输入人数: ");
person=scanner.nextInt();
}
}
private static void red(float sum,int person) {
DecimalFormat df3=new DecimalFormat("0.##");
for(int i=0;i<person;i++) {
avg=sum/(person-i);//计算当前剩余红包总金额的平均值
paperMoney=(float)(Math.random()*(avg*1.5)+0.05); //红包的金额最少是0.05元,最大是每一次平均值的1.5倍
while(paperMoney>avg*1.5 || paperMoney<0.05) {//若分配出来的红包金额小于0.05元 或大于本次平均值的1.5倍,则重新生成随机数
paperMoney=(float)(Math.random()*(avg*1.5)+0.05);
}
if(i==person-1) {//分配到最后一个红包时,仅剩下的所有金额全部赋予
paperMoney=sum;
}
sum=sum-paperMoney;//当前红包总金额=总红包金额-每一次分配出来的金额
System.out.println("第"+(i+1)+"个 "+df3.format(paperMoney));
}
}
}
java模拟随机红包
最新推荐文章于 2024-08-04 11:07:52 发布