【发布时间】:2012-05-10 22:29:15
【问题描述】:
所以我目前正在为大学做一个练习,它有几个可选部分(因为我们还没有在课堂上做过这个),其中一个是使用列表而不是数组(所以它是可变大小的)另一个打印按点排序的列表(我现在会讲到)
所以,我有一个看起来像这样的 Player.java 类。
public class Player {
String name;
String password;
int chips;
int points;
public Player(String n, String pw, int c, int p) {
name = n;
password = pw;
chips = c;
points = p;
}
public String getName() {
return name;
}
public void setName(String n) {
name = n;
}
public void setPW(String pw) {
password = pw;
}
public String getPW() {
return password;
}
public void setChips(int c) {
chips = c;
}
public int getChips() {
return chips;
}
public void setPoints(int p) {
points = p;
}
public int getPoints() {
return points;
}
}
很简单,然后我用这个(在另一个类中)创建一个列表:
List<Player> lplayer = new ArrayList<Player>();
用这个添加玩家:
lplayer.add(new Player(n,pw,c,p))`
最后用这个来阅读他们的统计数据:
public int search_Player (String n) {
String name;
int i = 0;
boolean found = false;
while ((i <= tp) && (!found)) {
name = lplayer.get(i).getName();
if (name.equals(n)) {
found = true;
}
i++;
}
return (found == true) ? i-1 : -1;
}
public Player show_Player (int i) {
return lplayer.get(i);
}
public void list_Players() {
Collections.sort(lplayer);
int i2;
if (tp > 0) { // variable which contains number of total players
for (int i = 0;i<tp;i++) {
i2 = i+1;
System.out.println ("\n"+i2+". "+lplayer.get(i).getName()+" [CHIPS: "+lplayer.get(i).getChips()+" - POINTS: "+lplayer.get(i).getPoints()+"]");
}
}
else {
System.out.println ("There are no players yet.");
}
}
所以这基本上就是所有代码。如您所见,我已经有一个 list_Players 函数,但它只是按照添加的顺序打印它。我需要一种按每个玩家的得分排序的方法(所以基本上是一个排名)。
如您所见,我对 java 还很陌生,所以请尽量不要想出一种非常复杂的方法。
我已经搜索过它并找到了 Collections.sort(list) 之类的东西,但我想这不是我需要的。
谢谢!
【问题讨论】:
-
你肯定需要
Collections.sort。如果你只需要按分数排序而不需要任何其他条件,那么写public class Player implements Comparable<Player>并实现所需的方法。 -
如果你需要评论像
variable which contains number of total players这样简单的东西,你真的需要使用更好的变量名。 -
也很难推断像
int search_Player (String n)这样的方法做了什么。Player getPlayerByName(String name)呢(除非分配明确要求前一个方法签名)? -
这是我学会做的,但肯定有更好更简单的方法来做
-
我还建议使用增强的 for 循环,例如
for (Player player : players) { ... }而不是基于索引的循环,它更容易理解并且编写的代码更少:)
标签: java list class sorting arraylist