我目前有一个球员1-4的得分排序列表,但我在将他们与正确的球员进行匹配时遇到了问题。
以此方法为例:
public static void exitmethod(int[] scorep1)
{
sort(scorep1);
for (int i = 0; i < 4; i++)
{
System.out.println("Player " + (i+1) + " scored " + scorep1[i] + "");
}
System.exit(0);
}以这种方式将分数与Player 1 = 5、Player 2 = 2、Player 3 = 2和Player 4 = 1的分数一起打印出来,得到的有序输出为
Player 1 scored 1
Player 2 scored 2
Player 3 scored 2
Player 4 scored 5这显然是不正确的,我不知道如何获得正确的球员编号来打印它的相应分数。如果能在正确的方向上推进,我们将非常感激。
发布于 2015-12-05 23:55:28
这里有一个使用TreeMap<>的选项,这样就不需要定义另一个类,只需将每个分数映射到它的球员。
int scores[] = {7, 3, 1, 2, 4};
Map<Integer, Integer> map = new TreeMap<>();
for (int i = 0; i < scores.length; i++) {
map.put(scores[i], i);
}
System.out.println("map = " + map);
for (Entry<Integer, Integer> e : map.entrySet()) {
System.out.println("player " + e.getValue() + " scored " + e.getKey());
}发布于 2015-12-05 23:47:38
默认的Array.sort(int[]) gives you ascending结果而不是降序。
您可以创建自己的比较器,并将其作为参数传递给适当的List::sort方法,因为您说您已经“拥有一个排序的列表”。
似乎没有Arrays.sort()的一个版本,它也接受一个比较参数。
编辑:另请参阅@Haider的评论以获取示例。
https://stackoverflow.com/questions/34107174
复制相似问题