2020-11-09

Random

第一篇文章
是尝试着学习写博客
敲一个简单的代码
记录自己的学习过程
Random对象的使用


import java.util.Scanner;
import java.util.Random;

public class RedBags{
		public static void main(String[] args)
		{
			System.out.println("--------模拟微信抢红包---------\n");
			Scanner sc  = new Scanner(System.in);//控制台输入
			System.out.println("请输入要装入红包的总金额(元):");
			double total = sc.nextDouble();      //输入“红包的总金额”
			System.out.println("请输入红包的个数(个):");
			int bagsnum = sc.nextInt();          //输入“红包的个数”
			double min = 0.01;                   //初始化“红包的最小金额”
			Random random = new Random();        //创建随机数对象random
			if(total/bagsnum == 0.01){           //红包总金额与个数的商为0.01时
				for(int i =1;i < bagsnum;i++){
					double money = min;          //让每个包中的金额均为最小金额0.01
					total -= money;              //红包中的剩余金额
					System.out.println("第" + i + "个红包" + String.format("%.2f",money) + "元");
				}

			}else if(total / bagsnum < 0.01){    //红包总金额与个数的商小于0.01时
				System.out.println("要保证每个人都能分到1分钱哦!");
				return;                          //不再执行第22行以下的代码,例如第46行
			}else {
				for(int i = 1; i < bagsnum;i++){ //设置“循环"
					/*
					 *本次红包可用最大金额 =
					 *可分配金额 - (红包总数 - 已发出的红包数) * 红包的最小金额
					 */
					double max = total - (bagsnum - i) * min;
					double bound = max - min;    //设置随机金额的取值范围
					/*
					 *据随机金额的取值范围,随机生成红包余额。由于nextInt(int bound)
					 *只能用整形做参数,所以先将dound乘100(小数点向右移两位)
					 *获得到一个整数后,将这个整数除100(小数点向左移两位)
					 *并转换成与金额相同的浮点类型
					 */
					double safe = (double)random.nextInt((int) (bound * 100)) / 100;
					double money = safe + min;    //最后加上红包的最小金额,以防safe出现0值
					total = total - money;        //替换total的值
					System.out.println("第" + i + "个红包" + String.format("%.2f",money) + "元");
				}
			}
			//输出剩余金额
			System.out.println("第" + bagsnum + "个红包:" + String.format("%.2f",total) + "元");
			sc.close();                           //关闭控制台输入
		}
	}    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值