这个list里面是对象来的,假如:
class stu{
String name;
String score;//分数
String rank;//名次
}
List students=new ArrayList();
students.add(new stu('张3','60',''));
students.add(new stu('张4','65',''));
students.add(new stu('张5','65',''));
students.add(new stu('张6','80',''));
//----------------------------------------
syso(students)//假设目前的输出的顺序已经是按照从小到大的来输出,名次现在还是空的。
如果分数相同,名次不相同的话:
int num=stu.size();
for(stu s:students){
s.rank=num;
num--;
}//这样子应该就可以了,但是如果想要分数相同,名次也一样,然后再输出来,应该怎么弄,
我想了好久,用了冒泡和选择排序都没有解决问题,应该是哪里没有考虑周道,我是实在想不到了,哪位大哥帮帮忙。
一个ArrayList中的分数怎么排名次,分数相同名次就相同。
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
9条回答 默认 最新
coder_xiaozhao 2018-08-22 06:55关注首先先用冒泡排序将他们的分数由大到小排列出来,代码如下
for (int i = 1; i < students.size(); i++)
{
for (int j = 0; j < listMineRs.Count - i; j++)
{
if (students[j].score < students[j + 1].score)
{
stu temp = listMineRs[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
# 然后再循环一遍这个list给他们的排名赋值
int count = 1;
for(int i=0;i<students.size();i++)
{
if(i=0)
{
students[i].rank=count;
count++;
}
else{
if(students[i].score==students[i-1].score){
students[i].rank=students[i-1].rank;
}else{
students[i].rank = count;
count++;
}} }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报