2020-12-22

import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

/*
 * 4、假设一个球队有队员1000名,在一次选拔赛中,各个队员都参加了5个项目(跳远、跳高、跳绳、100米跑、仰卧起坐)的测验(100分制),
 * 现在要从这1000个队员中选出平均成绩最好的50位去参加集训。请按照平均成绩降序输出这50个队员的信息,输出信息包括:队员名字、年龄、各项目成绩、平均成绩,请实现相应的程序。25分
额外要求:
1)必须包含2个类:队员类TeamMember,球队类Team,球队类有一个属性teamMems,包含其所有队员的信息;
2)队员信息必须包含名字、年龄;球队信息必须包含名字、所有队员信息;通过TeamMember的构造方法创建队员信息,通过Team的构造方法创建球队信息。
3)1000名队员随机产生:每个队员各项成绩随机产生(0-100分之间),不能相同;年龄随机产生(25-35岁之间),不能相同;名字随机产生,不能相同。
4)以上内容是规定属性,其它属性根据编程需要自行添加;各属性是何种类型根据实际情况自定。

 */
class  TeamMember  implements Comparable<TeamMember>
{
	String name;
	int age;
	int[] score=new int[5];
	double avg;
	@Override
	public int compareTo(TeamMember o) {
		if((avg-o.avg)<0)
			return 1;
		else
			return -1;		
	}
	public String toString()
	{
		return name+"  "+age+"  "+score[0]+"  "+score[2]+"    "+score[3]+"    "+score[4]+"    "+avg;
	}
}
class Team
{
	Random r=new Random();
	TeamMember[] teamMems=new TeamMember[1000];
	public void re_r()
	{
		Set<String> set=new HashSet<>();
		while((set.size())!=1000)
		{
			String s="";
			for(int i=0;i<2;i++)
			{
				s+=(char)(r.nextInt(32)+97);
			}
		    set.add(s);
		}
		List<String>  list=new ArrayList<>();
		List<TeamMember>  list1=new ArrayList<>();
		for(String x:set)
			list.add(x);
		for(int i=0;i<1000;i++)
		{
			int sum=0;
			teamMems[i]=new TeamMember();
			teamMems[i].age=r.nextInt(26)+10;
			teamMems[i].name=list.get(i);
            for(int j=0;j<5;j++)
            {
            	teamMems[i].score[j]=r.nextInt(100)+1;
            	sum+=teamMems[i].score[j];
            }
            teamMems[i].avg=(sum/5.0);
		}
		for(TeamMember y:teamMems)
			list1.add(y);
		Collections.sort(list1);
		for(int i=0;i<50;i++)
			System.out.println(list1.get(i).toString());
		
		
	}
}
public class Test6 {
public static void main(String[] args)
{
	Team aTeam=new Team();
	aTeam.re_r();
}
}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值