我目前有一个排序的玩家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
这显然是不正确的,我不知道如何使用它的对应分数来打印正确的玩家编号。非常感谢正确方向的推动。
答案 0 :(得分:2)
这是使用TreeMap&lt;&gt;的选项因此,不需要定义另一个类,只需将每个分数映射到其播放器。
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());
}
答案 1 :(得分:0)
默认Array.sort(int[]) gives you ascending结果而不是降序。
您可以创建自己的比较器并将其作为适当的List::sort方法传递给您,因为您说您已经“排序列表”。
似乎没有一个版本的Arrays.sort()也带有Comparator参数。
编辑: 另见@ Haider对例子的评论。