问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java投票排名实现

发布网友 发布时间:2022-05-05 08:13

我来回答

4个回答

热心网友 时间:2023-10-23 22:18

两种实现方式:1)sql,2)java

1)sql语句-mysql

SELECT NAME,num,ranking
FROM (SELECT NAME,num,
IF (num =@num ,@ranking ,@ranking :=@ranking + 1)AS ranking,
@num := num
FROM score,
(SELECT @ranking := 0,@num:=-1) tmp
ORDER BY num DESC
)tmp

2) java实现

public static void main(String[] args) {
    //初始化数据
    List<Rank> ranks = Arrays.asList(new Rank("薛之谦", 100l),
            new Rank("陈奕迅", 102l),
            new Rank("田馥甄", 100l),
            new Rank("周杰伦", 99l));
    //按分数降序排序
    ranks.sort((r1, r2) -> r2.getNum().compareTo(r1.getNum()));
    //计算排名
    int ranking = 0;
    long num = -1;
    for (Rank rank : ranks) {
        rank.setRanking(rank.getNum() == num ? ranking : ++ranking);
        num = rank.getNum();
    }
    //输出
    ranks.forEach(o -> System.out.println(o.getName() + ";" + o.getNum() + ":" + o.getRanking()));
}

热心网友 时间:2023-10-23 22:18

//这个例子不关心从数据库读取数据,只关心根据排名打印结果.
import java.util.*;
public class Rank {
public void printRanking(Map<String,Integer> rm){
String[] ks=rm.keySet().toArray(new String[rm.size()]);
int[] rnk = new int[ks.length];
for(int i=0; i<ks.length; i++){
rnk[i] = rm.get(ks[i]);
}
int c = 0;
for(int i=0; i<ks.length-1; i++){
if(++c>1000)System.exit(0);
if(rnk[i]<rnk[i+1]){
String tmp = ks[i];
ks[i]=ks[i+1];
ks[i+1]=tmp;
rnk[i]+=rnk[i+1];
rnk[i+1]=rnk[i]-rnk[i+1];
rnk[i]-=rnk[i+1];
i-=i==0?1:2;
}
}
int tmp=1;
for(int i=0; i<ks.length; i++){
if(i==0){
System.out.print("第 1 名: "+ks[i]+"\t得票:"+rnk[i]);
}
else{
if(rnk[i]==rnk[i-1]){
System.out.print(", "+ks[i]+"\t得票:"+rnk[i]);
}
else{
System.out.print("\n第 "+(++tmp)+" 名: "+ks[i]+"\t得票:"+rnk[i]);
}
}
// if(tmp==3)break;//只打印前3名
}
System.out.println();
}
public static void main(String[] args){
//MAP里保存歌手名和对应的投票数,这个就直接从数据库里读取,稍加处理就行.
Map<String,Integer> rm = new HashMap<String,Integer>();

rm.put("王菲",136);
rm.put("周华健",61);
rm.put("S.H.E",76);
rm.put("刘德华",81);
rm.put("林XY",86);
rm.put("朱ZZ",61);
rm.put("阿牛",86);
rm.put("张UU",62);
rm.put("金莎",36);
rm.put("邓丽君",86);

Rank r = new Rank();
r.printRanking(rm);
}
}

热心网友 时间:2023-10-23 22:19

select * from ... order by num

热心网友 时间:2023-10-23 22:19

rm.put("阿牛",86);

热心网友 时间:2023-10-23 22:18

两种实现方式:1)sql,2)java

1)sql语句-mysql

SELECT NAME,num,ranking
FROM (SELECT NAME,num,
IF (num =@num ,@ranking ,@ranking :=@ranking + 1)AS ranking,
@num := num
FROM score,
(SELECT @ranking := 0,@num:=-1) tmp
ORDER BY num DESC
)tmp

2) java实现

public static void main(String[] args) {
    //初始化数据
    List<Rank> ranks = Arrays.asList(new Rank("薛之谦", 100l),
            new Rank("陈奕迅", 102l),
            new Rank("田馥甄", 100l),
            new Rank("周杰伦", 99l));
    //按分数降序排序
    ranks.sort((r1, r2) -> r2.getNum().compareTo(r1.getNum()));
    //计算排名
    int ranking = 0;
    long num = -1;
    for (Rank rank : ranks) {
        rank.setRanking(rank.getNum() == num ? ranking : ++ranking);
        num = rank.getNum();
    }
    //输出
    ranks.forEach(o -> System.out.println(o.getName() + ";" + o.getNum() + ":" + o.getRanking()));
}

热心网友 时间:2023-10-23 22:18

//这个例子不关心从数据库读取数据,只关心根据排名打印结果.
import java.util.*;
public class Rank {
public void printRanking(Map<String,Integer> rm){
String[] ks=rm.keySet().toArray(new String[rm.size()]);
int[] rnk = new int[ks.length];
for(int i=0; i<ks.length; i++){
rnk[i] = rm.get(ks[i]);
}
int c = 0;
for(int i=0; i<ks.length-1; i++){
if(++c>1000)System.exit(0);
if(rnk[i]<rnk[i+1]){
String tmp = ks[i];
ks[i]=ks[i+1];
ks[i+1]=tmp;
rnk[i]+=rnk[i+1];
rnk[i+1]=rnk[i]-rnk[i+1];
rnk[i]-=rnk[i+1];
i-=i==0?1:2;
}
}
int tmp=1;
for(int i=0; i<ks.length; i++){
if(i==0){
System.out.print("第 1 名: "+ks[i]+"\t得票:"+rnk[i]);
}
else{
if(rnk[i]==rnk[i-1]){
System.out.print(", "+ks[i]+"\t得票:"+rnk[i]);
}
else{
System.out.print("\n第 "+(++tmp)+" 名: "+ks[i]+"\t得票:"+rnk[i]);
}
}
// if(tmp==3)break;//只打印前3名
}
System.out.println();
}
public static void main(String[] args){
//MAP里保存歌手名和对应的投票数,这个就直接从数据库里读取,稍加处理就行.
Map<String,Integer> rm = new HashMap<String,Integer>();

rm.put("王菲",136);
rm.put("周华健",61);
rm.put("S.H.E",76);
rm.put("刘德华",81);
rm.put("林XY",86);
rm.put("朱ZZ",61);
rm.put("阿牛",86);
rm.put("张UU",62);
rm.put("金莎",36);
rm.put("邓丽君",86);

Rank r = new Rank();
r.printRanking(rm);
}
}

热心网友 时间:2023-10-23 22:19

select * from ... order by num

热心网友 时间:2023-10-23 22:19

rm.put("阿牛",86);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
“笑指旧山归路长”的出处是哪里 PCB为什么要拼板,PCB拼板打样有哪些好处? 绘制紫外吸收光谱时,我发现最大吸收波长是333nm,此时吸光度为4.01 对吸光度测量值有何影响? 陆垚知马俐的歌词是什么? 玫瑰花水中的养殖方法 陈年柚子茶如何做 陈年柚子茶的制作方法 在答题卡上改题号是指那一道题扣分还是整个卷子都没? ...考试时我写到了卷子上,会怎么样?会不会按抄袭 高考时在卷子上不小心画了道怎么办? 若一个多边形外角和与内角和相等,则这个多边形是 边形. 内角和等于外角和的多边形是( )A. 三角形B. 四边形C. 五边形D. 六边... 已知一个多边形的内角和与它的外角和正好相等,则这个多边形是 边形. 一个多边形的内角和与外角和相等,它是几边形? 一个多边形的内角和与外角和相等,它是几边形? 求解 已知一个多边形的内角和与它的外角和正好相等则这个多边形是什么边形 如果一个多边形的内角和与外角和相等,那么这个多边形是几边形 一个多边形的内角和与外角和相等,则这个多边形是【 】 A.四边形 ... 什么多边形的内角和与外角和相等 请问哪里有个性图标(文件夹图标)的下载. 谁能告诉我在那下载(.ioc)文件夹的图标? 文件夹的图标哪里下载(有没有ABC字母的)? 怎么把电脑文件夹图标改成自己从网上下载的图标? 能否将系统文件夹图标改成自己下载的图标 怎样从网上下把文件夹图标更改成下载的 如何下载文件夹图标? 在论文中引用了纪录片或B站up主的视频中的一段话,需要加注释吗? 在论文里引用别人说过的话,需要注解吗? 论文中凡是引用原文必须注释吗? 论文引用别人的话~需要注释以外~还需要把引用的话加上双引号吗? 一个多边形内角和与外角和相等,它是几边形 若一个多边形的内角和与它的外角和相等,则它是几边形 java实现一个排名功能问题 一个多边形的内角和与外角和相等,他是几边形? 一个多边形的内角和等于它的外角和,这个多边形是___边形. java如何用txt文件做个排行榜, 3.一个多边形的内角和与外角和相等,则这个多边形的边数为( ) a.3 b.4 c.5 d.6 苹果5s主板坏了回收能卖多少钱 苹果5s主板坏了回收能卖多少钱 java排序成绩排名,升序怎么排 坐等答案 java有关学生成绩排名 某多边形的内角和与外角和相等,这个多边形的边数是___. 用Java编写一个游戏结束的排行榜 内角和与它的外角和的度数相同的多边形的边数是 我现在用用java写一个排行榜,里面有个上升下降的指标请问要怎么实现呢 java 怎么计算排行榜后一名与前一名的差距 java 用哪个组件来做排行榜比较好? 祭奠亲人的话 祭祀语句简短有哪些? 生产加工作坊和小微企业区别