package zuoye;
import java.text.SimpleDateFormat;
import java.util.*;
public class zuoye_3 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Date t=new Date(); //时间类,设定红包过期的时间
Calendar c=Calendar.getInstance();
c.setTime(t);
c.add(Calendar.HOUR, 2); //2小时后过期
System.out.println("请输入红包金额:");
double n=sc.nextInt();
System.out.println("请输入红包的数量:");
int x=sc.nextInt();
Money hong=new Money(n,c.getTime(),x); //传递参数,红包金额,红包数,时间
//sc.next();
System.out.println("请输入抢红包的人的名字:");
for(int i=0;i<x;i++)
{ people ob1=new people(sc.next()); //创建几个人进行抢
Date t1=new Date();
hong.qiang(ob1,t1);
}
hong.show();
}
}
class Money{
private double money; //红包金额
private Date time; //到期时间
private int size; //红包数
private int num; //第几个人在抢
private double nowmoney; //红包剩余金额
ArrayList<Double> str=new ArrayList<Double>(); //红包被分为存取随机金额
ArrayList<people> p=new ArrayList<people>(); //抢红包的人
public Money(double money, Date time, int size) {
super();
this.money = money;
this.time = time;
this.size = size;
nowmoney=money;
yao();
}
/*
* 将红包分为随机金额存到数组中,并处理如果金额为0时的情况,最后打乱顺序
*/
private void yao()
{ double m=nowmoney;
for(int i=1;i<=size;i++)
{
if(i==size)
{str.add(m);
m=0;
}
else
{
Random r=new Random();
double x=0;
if(m!=0)
x=r.nextDouble()*m;
m-=x;
str.add(x);
}
}
Collections.sort(str);
for(int i=0;i<str.size();i++)
{
if(str.get(i)<0.005)
{
double x=str.get(size-1)*0.01;
str.set(i,x+str.get(i));
str.set(size-1,str.get(size-1)-x);
}
else
{
break;
}
}
Collections.shuffle(str);
}
/*
* 抢红包操作,参数为人和时间
*/
void qiang(people ob,Date t){
num++;
if(num>size)
{
System.out.println("红包已经抢完了");
return ;
}
if(t.after(time))
{
System.out.println("红包已经过期了");
return ;
}
ob.money=str.get(num-1);
ob.time=t;
nowmoney-=ob.money;
p.add(ob);
if(num==size)
nowmoney=0;
}
/*
* 显示当前红包情况,被谁抢,什么时候,剩余多少
*/
void show()
{
Collections.sort(p);
System.out.print("红包共"+this.money+"元,已有"+p.size()+"人抢,现在剩余");
System.out.printf("%.2f\n",this.nowmoney);
SimpleDateFormat c=new SimpleDateFormat("h:mm:ss"); //设定日期的输出格式
for(int i=0;i<p.size();i++)
{
System.out.print(p.get(i).name+"抢到");
System.out.printf("%.2f",p.get(i).money);
System.out.println(" 时间"+c.format(p.get(i).time));
}
}
}
class people implements Comparable<people>{
String name;
double money;
Date time;
public people(String name) {
super();
this.name = name;
}
@Override
public int compareTo(people o) {
return (int)(o.money-this.money);
}
}
来源: http://www.bubuko.com/infodetail-2280117.html