2013-03-11 29 views
0

我正在製作一個拼字遊戲應用程序,我想製作一個系統,玩家可以在其中查看他們的分數以及名字​​。分數應該從最高到最低排列。輸出應該是這樣的: 名稱分數按Android遊戲分數排序玩家名稱

Kathy 150 
Charm 140 
Albert 130 
Arvin 120 
Angelo 110 

我試圖做到這一點使用數組,我有一個很難使這項工作。

int score[]= new int[4]; 
     score[0]= 120; 
     score[1]= 130; 
     score[2]= 140; 
     score[3]= 150; 

     String names[] = new String[4]; 
     names[0]= "albert"; 
     names[1]= "arvin"; 
     names[2]= "charm"; 
     names[3]= "kathy"; 

     Player[] players = new Player[names.length]; 
     for(int i = 0; i < names.length; i++) { 
      players[i] = new Player(names[i], score[i]); 

      show.setText((CharSequence) players[i]); 

     } 

     Arrays.sort(players, new PlayerComparator()); 


    class PlayerComparator implements Comparator<Player> { 
public int compare(Player p1, Player p2) { 
    return p1.getScore() < p2.getScore() ? -1 
      : p1.getScore() > p2.getScore() ? 1 : 0; 

} 
} 

public class Player { 

private String name; 

private int score; 

public Player(String name, int score) { 
    this.name = name; 
    this.score = score; 
} 

public String getName() { 
    return name; 
} 

public int getScore() { 
    return score; 
} 

public String toString() { 
    return "name=" + name + "; score=" + score; 
} 

}

任何人都可以請幫我在使用什麼引導我實現這一目標?非常感謝你提前。

+0

你的代碼在哪裏?有什麼結構來保存這些數據? – Rawkode 2013-03-11 14:13:58

+0

請發佈您已有的代碼。 – 2013-03-11 14:14:22

+6

使用'objects','ArrayList','Comparable'並覆蓋'compareTo'。問題解決了。嘗試使用這些代碼,如果卡住了任何地方,請回到這裏。 – SudoRahul 2013-03-11 14:14:35

回答

2
  1. 製作一個class Score implements Comparable它包含用戶名和一個數字。
  2. 執行compareTo()Score,Comparable接口需要。
  3. 將所有得分插入例如ArrayList
  4. 致電Collections.sort(yourList)
  5. 要快樂:)
0

如果你要使用數組來做到這一點,你需要保持2個獨立的陣列道兩者類型整數,首先將是分數和第二將是他們的位置。使用第二個數組的值來跟蹤每個玩家及其各自的得分。根據您使用的語言,通常可以使用排序函數和算法,您可以從標準庫中使用排序函數和算法來執行從最高排序到最低排序等任何操作。

如果您使用的是Java我會建議使用一個HashMap http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html 這將消除使用2個陣列和將simplier我認爲 這就是爲什麼我會建議考慮使用一個HashMap它會更簡單 希望這有助於