2015-12-05 38 views
0

我目前有一個排序的玩家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 = 5Player 2 = 2Player 3 = 2Player 4 = 1分數給出了有序輸出

Player 1 scored 1 
Player 2 scored 2 
Player 3 scored 2 
Player 4 scored 5 

這顯然是不正確而且我不知道如何獲得正確的球員號碼來打印它的對應分數。向正確的方向微調將不勝感激。

+1

創建一個類播放器與ID和得分,並使用http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/爲soring您的播放器類 – Haider

回答

0

默認Array.sort(int[]) gives you ascending結果而不是降序。

你可以創建自己的比較,並通過在作爲agrument到合適的List::sort的方法,因爲你說你已經「有一個排序的列表」。

它似乎沒有一個版本的Arrays.sort(),它也需要一個Comparator參數。

編輯: 請參閱@ Haider的例子評論。

+0

唐沒有足夠的代表。將此鏈接發佈到[Comparator](http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html)文檔中... – Inon

2

這是一個使用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()); 
}