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()for ScoreComparable接口需要那个。
  3. 将所有分数插入到例如ArrayList.
  4. 打电话Collections.sort(yourList)
  5. 要开心 :)
于 2013-03-11T14:19:38.383 回答
0

如果要使用数组来执行此操作,则需要跟踪 2 个单独的数组,它们都是整数类型,第一个用于分数,第二个用于它们的位置。使用第二个数组的值来跟踪每个玩家及其各自的得分。根据您使用的语言,通常可以使用标准库中的排序函数和算法来执行从最高到最低的排序或其他排序。

如果您使用的是 Java,我建议您使用 HashMap http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html 这将消除使用 2 个数组并且更简单我认为这是为什么我会建议考虑使用 HashMap 它会使其更简单 希望这会有所帮助

于 2013-03-11T14:50:56.787 回答