这个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++;
}} }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?
- ¥15 c++头文件不能识别CDialog
- ¥15 Excel发现不可读取的内容
- ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
- ¥20 yolov5自定义Prune报错,如何解决?