0

私はスクラブルアプリを作っていますが、プレイヤーが名前と一緒にスコアを表示できるシステムを作りたいと思っています。スコアは最高から最低の順に並べる必要があります。出力は次のようになります。 名前 スコア

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;
}

}

誰かが私に何を使うべきかについて助けてくれて、この目標を達成するために私を導いてくれますか?事前にどうもありがとうございました。

4

2 に答える 2

2
  1. class Score implements Comparableユーザー名と番号を保持するを作成します。
  2. の実装compareTo()、インターフェイスにはそれが必要ですScoreComparable
  3. たとえば、すべてのスコアを挿入しますArrayList
  4. コールしCollections.sort(yourList)ます。
  5. 幸せになる :)
于 2013-03-11T14:19:38.383 に答える
0

配列を使用してそれを行う場合は、整数型の 2 つの別個の配列を追跡する必要があります。1 つ目はスコア用、2 つ目はそれらの位置用です。2 番目の配列の値を使用して、各プレーヤーとそれぞれのスコアを追跡します。使用している言語に応じて、通常、標準ライブラリから使用できる並べ替え関数とアルゴリズムがあり、最高から最低までの並べ替えを実行できます。

Java を使用している場合は、HashMap http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.htmlを使用することをお勧めし ますHashMap の使用を検討することをお勧めする理由

于 2013-03-11T14:50:56.787 に答える