为了账号安全,请及时绑定邮箱和手机立即绑定

对象排列问题

对象排列问题

幕布斯6054654 2019-02-20 01:31:20
项目任务是要处理一个田径赛事的比赛结果。需要实现下面功能:把某个比赛项目的成绩从高到低结果排序并在前面加上名次。成绩相同者名次相同,并按人名的字典(字母)顺序排序)。 比如本来结果的列表ArrayList<Result>输出如下: 成绩 名字 7.00 Donald Li6.00 Joan Chen 7.00 Alan Jiang4.00 Tricia Zhang7.00 Ada Wang 6.00 William Sf 方法应该达到的理想效果如下1 7.00 Ada Wang 1 7.00 Alan Jiang1 7.00 Donald Li4 6.00 Joan Chen4 6.00 William Sf6 4.00 Tricia Zhang 本人菜鸟,试了很多种方法都排不对,请能者大神不吝赐教指点迷津,非常感谢!
查看完整描述

5 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

Collections.sort(list, comparator) 进行排序
在覆写的sort方法中,先判断分数是否相同,如果相同则使用 for 循环遍历两个人名的每个位置上的字符直到某个位置上的字符有大小关系;如果不相同则直接返回成绩的大小关系。

查看完整回答
反对 回复 2019-03-01
?
烙印99

TA贡献1829条经验 获得超13个赞

非常感谢回复!

现在我已经把结果列表按成绩高低和名字字母顺序排列好了,结果列表现在是resultList:

7.00 Ada Wang
7.00 Alan Jiang
7.00 Donald Li
6.00 Joan Chen
6.00 William Sf
4.00 Tricia Zhang

下面开始往结果前面加名次

int[] rank=new int[resultList.size()] ;
rank[0]=1;
for(int i=1; i<resultList.size();i++)

{if(resultList.get(i).getResultValue()==resultList.get(i-1).getResultValue())

{rank[i]=rank[i-1];}
else
{rank[i]=i+1;}

}

for(int i=0; i<resultList.size();i++) {
System.out.println(rank[i]+" "+resultList.get(i).getResultValue()+" "+resultList.get(i).getParticipant().getName()+" "+resultList.get(i).getParticipant().getTeam());
}

打印结果居然是:

1 7.00 Ada Wang
2 7.00 Alan Jiang
3 7.00 Donald Li
4 6.00 Joan Chen
5 6.00 William Sf
6 4.00 Tricia Zhang

很奇怪。当两项结果值相同时,怎么没有执行if结果把rank变为相同呢?

查看完整回答
反对 回复 2019-03-01
  • 5 回答
  • 0 关注
  • 379 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信