, więc obecnie robię ćwiczenie na studia, które ma kilka opcjonalnych części (ponieważ nie zrobiliśmy tego jeszcze na lekcji), jednym z nich jest używanie list zamiast tablic (więc będzie to zmienny rozmiar), a drugi drukuje listę posortowaną według punktów (dojdę teraz do tego)Posortuj listę zawierającą niestandardową klasę
Mam więc klasę Player.java, która wygląda tak.
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;
}
}
Całkiem proste, potem tworzę listę z tym (w innej klasie):
List<Player> lplayer = new ArrayList<Player>();
dodaje graczy z tym:
lplayer.add(new Player(n,pw,c,p))`
I wreszcie czytając ich statystyki:
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.");
}
}
To w zasadzie cały kod. Jak widać, mam już funkcję list_Players, ale po prostu drukuje ją w kolejności, w jakiej została dodana. Potrzebuję sposobu na wydrukowanie posortowane według punktów, które ma każdy gracz (czyli w zasadzie ranking).
Jak widać, jestem całkiem nowy dla java, więc proszę, nie próbuj wymyślić bardzo skomplikowanego sposobu robienia tego.
Już szukałem tego i znalazłem takie rzeczy jak Collections.sort (list), ale myślę, że to nie jest to, czego potrzebuję tutaj.
Dziękujemy!
Zdecydowanie potrzebujesz 'Collections.sort'. Jeśli potrzebujesz tylko sortować według wyniku, a nie innych kryteriów, wpisz "public class Player implements Comparable" i wprowadź wymaganą metodę. –
Jeśli chcesz skomentować proste rzeczy, takie jak "zmienna, która zawiera liczbę wszystkich graczy", naprawdę musisz użyć lepszych nazw zmiennych. –
Bardzo trudno jest zrozumieć, jak działa metoda 'int search_Player (String n)'. A co powiesz na 'Player getPlayerByName (nazwa ciągu)' (chyba, że poprzednia sygnatura metody jest wyraźnie wymagana przez zadanie)? –