Ok, ich bin irgendwie in der Verlust hier aber hier geht. Also muss ich den Array-Medallisten sortieren, wenn sie ausgedruckt werden. Zuerst muss ich nach Gold-Medaillen sortieren, die zum Index [0] hinzugefügt werden, zweitens nach Silber im Index [1], dritten nach Bronze im Index [2] und zuletzt, wenn ein Team gebunden ist, werden sie nach Team-Namen sortiert. Muss ich eine Sortiermethode in einer anderen Klasse aufrufen, diese verfolgen und mit den anderen Teams vergleichen und vergleichen, und wenn sie am besten sind, sie zuerst ausdrucken?Vergleichen Integer, Arrays von Klasseninstanzen
Wie kann ich Integer in einem Array von Klassen mit einem anderen vergleichen?
Wenn ein Benutzer einen bestimmten Befehl eingibt, wird eine Liste von Teams mit ihren Ergebnissen ausgedruckt.
Ab jetzt sieht es wie folgt aus:
1st 2nd 3rd Team Name
0 0 0 North Korea
3 1 1 America
5 0 2 France
2 1 3 Germany
ich es sagen will:
1st 2nd 3rd Team Name
5 0 2 France
3 1 1 America
2 1 3 Germany
0 0 0 North Korea
import java.util.ArrayList;
import java.util.Arrays;
public class Team {
private String teamName;
private ArrayList<Participant> participantList = new ArrayList<Participant>();
private int[] medalList = new int[3];
public Team(String teamName) {
this.teamName = teamName;
}
public String getTeamName() {
return teamName;
}
public void addParticipant(Participant participant) {
participantList.add(participant);
}
public void removeFromTeam(int participantNr){
for(int i = 0; i < participantList.size(); i++){
if(participantList.get(i).getParticipantNr() == participantNr){
participantList.remove(i);
}
}
}
public void printOutParticipant() {
for(int i = 0; i < participantList.size(); i++){
System.out.println(participantList.get(i).getName() + " " + participantList.get(i).getLastName());
}
}
public boolean isEmpty() {
boolean empty = false;
if (participantList.size() == 0) {
empty = true;
return empty;
}
return empty;
}
public void emptyMedalList(){
Arrays.fill(medalList, 0);
}
public void recieveMedals(int medal) {
if(medal == 1){
int gold = 0;
gold = medalList[0];
medalList[0] = ++gold;
} else if (medal == 2){
int silver = 0;
silver = medalList[1];
medalList[1] = ++silver;
} else if (medal == 3){
int bronze = 0;
bronze = medalList[2];
medalList[2] = ++bronze;
}
}
public void printMedals(){
System.out.println(medalList[0] + " " + medalList[1] + " " + medalList[2] + " " + teamName);
}
public int compareTo(Team team) {
int goldDif = Integer.compare(team.medalList[0], this.medalList[0]);
if (goldDif != 0)
return goldDif;
int silverDif = Integer.compare(team.medalList[1], this.medalList[1]);
if (silverDif != 0)
return silverDif;
int bronzeDif = Integer.compare(team.medalList[2], this.medalList[2]);
if (bronzeDif != 0)
return bronzeDif;
return this.getTeamName().compareTo(team.getTeamName());
}
public String toString() {
return teamName;
}
}
I‘ Tut mir leid, du hast eine Frage, die keinen Sinn ergibt. Können Sie uns ein Beispiel geben, dem wir folgen können? –
Zeigen Sie den Code, den Sie sortieren möchten. Außerdem müsstest du 'medalList' in irgendeiner Form anzeigen, wenn du außerhalb dieser Klasse sortieren möchtest. – shmosel
Ich hatte keine Zeit zum Bearbeiten, ich sollte es so eingeben. Oh Entschuldigung, ich tippte während ich versuchte den Code herauszufinden. Hätte mehr Zeit brauchen, um eine richtige Frage zu stellen. Wenn ein Benutzer einen bestimmten Befehl eingibt, wird eine Liste von Teams mit ihren Ergebnissen ausgedruckt. Ab jetzt sieht es wie folgt aus: http://i.imgur.com/sJQpgsQ.png ich es sagen will: http://i.imgur.com/bB9gha0.png –