Gleiche Werte aus Array aussortieren

Guten Abend,

ich habe gerade ein Problem mit meinem Array aus Player Objekten mit dem jeweiligen score Werten.
Am ende eines Spiels möchte ich nun eine Auswertung haben wer auf welchem Platz ist. Aber Spieler mit gleichen Punktzahlen müssen noch mal Stechen um deren Platz auszuloten.
Aus diesem Grund muss ich die Gleichpunktiereten Spieler nacheinander antren lassen.
Nur habe ich keine Ahnung, wie ich dieses Array so zerflücke, dass ich gleiche Werte auslese.
 
X

Xyz1

Gast
Am Besten du sammelst alle Matches in einem extra Array. Zum Bleistift alle Player, die 40 Punkte haben müssen jeweils zwei gegeneinander "antreten".
 
Es sollten alle Spieler gleichzeitig angezeigt werden. Damit alle um die reihenfolge Spielen können.
Bsp. (die Ausgabe, die ich bekomme wenn ich die Spieler der Punkte nach Sortiert hole)
10.12.2017 18:26:32 [Info] 1. Spieler 1 (5 Pkt.)
10.12.2017 18:26:32 [Info] 2. Spieler 4 (4 Pkt.)
10.12.2017 18:26:32 [Info] 3. Spieler 3 (4 Pkt.)
10.12.2017 18:26:32 [Info] 4. Spieler 2 (4 Pkt.)
10.12.2017 18:26:32 [Info] 5. Spieler 5 (2 Pkt.)

Dort bräuchte müsste ich nur noch die Spieler 4,3,2 in einem Array, damit ich die danach neu in diese Liste einsortieren kann.

Die Folgende Funktion wird aufgerufen, wenn das Spiel zuende ist.
Java:
    public void endGame() {
       turnier.frameControler.showDialog("Letztes Spiel zu Ende.\nAuswertung beginnt");
       Player[] p = getPlayer(Player.SORT_BY_SCORE);
      
       // Stechen

       //Platzierungen anzeigen
       String list = "";
       int platz = 1;
       Logger.log("Platzierungen:");
       for(Player pl : Player.sort(getPlayer(), Player.SORT_BY_SCORE)) {
           list = list + platz + ". " + pl.getName() + " (" + pl.getScore() + " Pkt.)\n";
           Logger.log(platz + ". " + pl.getName() + " (" + pl.getScore() + " Pkt.)");
           platz++;
       }
       turnier.frameControler.showDialog(list);
   }
 
X

Xyz1

Gast
Damit es sinn macht:
Java:
class Player implements Comparable<Player> {
    int score = 0;
    Player(int score) {
        this.score = score;
    }
    @Override
    public int compareTo(Player o) {
        return o.score - this.score;
    }
    public static void main(String[] args) {
        Player[] plays = new Player[]{
            new Player(0),
            new Player(40),
            new Player(40),
            new Player(40),
            new Player(40),
            new Player(60),
            new Player(60),
            new Player(17)
        };
        Arrays.sort(plays);

        Player[][] same = new Player[0][0];
        Player[][][] matches = new Player[0][0][0];
        for (int i = 0; i < plays.length;) {
            Player[] a = new Player[0];
            int j = i;
            for (; j < plays.length - 1 && plays[j].score == plays[j + 1].score; j++) {
                Player[] b = new Player[a.length + 1];
                System.arraycopy(a, 0, b, 0, a.length);
                b[a.length] = plays[j];
                a = b;
            }
            if (j != i) {
                Player[] b = new Player[a.length + 1];
                System.arraycopy(a, 0, b, 0, a.length);
                b[a.length] = plays[j];
                a = b;

                Player[][] c = new Player[same.length + 1][];
                System.arraycopy(same, 0, c, 0, same.length);
                c[same.length] = a;
                same = c;
            }
            i = j + 1;
        }
        for (int i = 0; i < same.length; i++) {
            Player[][] a = new Player[0][0];
            for (int j = 0; j < same[i].length; j++) {
                for (int k = j + 1; k < same[i].length; k++) {
                    Player[][] b = new Player[a.length + 1][];
                    System.arraycopy(a, 0, b, 0, a.length);
                    b[a.length] = new Player[]{same[i][j], same[i][k]};
                    a = b;
                }
            }
            Player[][][] c = new Player[matches.length + 1][][];
            System.arraycopy(matches, 0, c, 0, matches.length);
            c[matches.length] = a;
            matches = c;
        }

        for (int i = 0; i < matches.length; i++) {
            System.out.println("Match Gruppe: " + (i + 1));
            for (int j = 0; j < matches[i].length; j++) {
                System.out.println("Match zwischen: " + Arrays.toString(matches[i][j]));
            }
        }
    }
}

Matches:
Code:
Match Gruppe: 1
Match zwischen: [Player@1, Player@2]
Match Gruppe: 2
Match zwischen: [Player@3, Player@4]
Match zwischen: [Player@3, Player@5]
Match zwischen: [Player@3, Player@6]
Match zwischen: [Player@4, Player@5]
Match zwischen: [Player@4, Player@6]
Match zwischen: [Player@5, Player@6]

Aber du solltest dringend höherwertige Kontainer benutzen.
 
Entschuldige, dass ich erstmal nicht online war.
Kannst du mir ein wenig den sehr komplexen Code erklären? Damit das auch richtig einsetzen kann?
Das wäre sehr nett.
 
X

Xyz1

Gast
gern, drei Schleifen, die ich mal "Hauptschritte" nenne:
Players mit gleichem Score finden
für jede Gruppe mit gleichem Score jeden gegen jeden antreten lassen
alle Gruppen und Matches ausgeben lassen

Das ganze ist so boilerplate, weils nicht Arrays mit Arrays gleicher Länge sind, die Länge unbestimmt ist und weil es mit "höherwertigen" Containern viel komfortabler wäre.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Gleiche Werte im Array hochzählen Java Basics - Anfänger-Themen 4
G Zählen gleiche Werte in Array Java Basics - Anfänger-Themen 5
K Neue Werte für gleiche Array-Indexe Java Basics - Anfänger-Themen 16
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
berserkerdq2 Ist JVM das gleiche wie IJVM (Bytecode) Java Basics - Anfänger-Themen 1
J Kreis soll die gleiche Fläche wie das Rechteck haben wie mache ich das? Java Basics - Anfänger-Themen 3
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
B Jsoup: gleiche Session nutzen Java Basics - Anfänger-Themen 0
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
X Textdatei: zwei-zeilenweise gleiche Zeilen rausschmeißen Java Basics - Anfänger-Themen 21
CptK Interface Beide Panels zeigen das Gleiche Java Basics - Anfänger-Themen 2
J Gleiche Methode in 2 verschiedenen Klassen - Lösung ? Java Basics - Anfänger-Themen 8
B Prüfen, ob Datum2 der gleiche Tag ist wie Datum1 Java Basics - Anfänger-Themen 10
O Problem gleiche Zahlen Java Basics - Anfänger-Themen 2
F Immer wieder gleiche Zufallszahl? Java Basics - Anfänger-Themen 4
N Array gleiche Datentypen zusammenrechnen Java Basics - Anfänger-Themen 28
T Classpath Zwei gleiche Dateinamen in verschiedenen Projekten möglich? Java Basics - Anfänger-Themen 13
J Methoden Zwei Methoden die fast das gleiche tun organisieren Java Basics - Anfänger-Themen 3
L Classpath Zwei Bibliotheken enthalten gleiche .class Datei Java Basics - Anfänger-Themen 6
R Enum ist das gleiche wie? Java Basics - Anfänger-Themen 15
H überprüfen ob in Array gleiche int-Zahlen gespeichert werden. Java Basics - Anfänger-Themen 7
K Das Gleiche wiederholen Java Basics - Anfänger-Themen 5
Y Gleiche Arrays aus einem Array mit Objekten Java Basics - Anfänger-Themen 5
O Klasse in ArrayList speichern Problem -gleiche Speicheradresse Java Basics - Anfänger-Themen 2
M Zwei gleiche Eintraege in ArrayList finden Java Basics - Anfänger-Themen 15
D Javaliste auf gleiche Einträge überprüfen Java Basics - Anfänger-Themen 2
E Input/Output Drucken am Mac immer gleiche Schriftgröße?!? Java Basics - Anfänger-Themen 2
I immer die gleiche Zufallszahl Java Basics - Anfänger-Themen 9
L Eine ArrayList auf gleiche Inhalte prüfen Java Basics - Anfänger-Themen 10
M Erste Schritte Eclipse führt immer das gleiche Programm aus Java Basics - Anfänger-Themen 6
J Objekterzeugung im Konstruktor - Mehrfach gleiche Referenzvariable? Java Basics - Anfänger-Themen 4
A Mehrere Gegner sollen das gleiche Bild benutzen Java Basics - Anfänger-Themen 3
W JButton in gleiche Größe bringen Java Basics - Anfänger-Themen 4
M gleiche Box in GUI mehrmals verwenden Java Basics - Anfänger-Themen 5
A objekt innerhalb der gleiche klasse Java Basics - Anfänger-Themen 10
S Dasselbe ist nicht das gleiche? Java Basics - Anfänger-Themen 7
K Datentypen Gleiche Zufallszahlen in verschiedenen Datenstrukturen Java Basics - Anfänger-Themen 6
G Gleiche Elemente in Feld zählen Java Basics - Anfänger-Themen 13
B 2D-Array, gleiche Einträge prüfen Java Basics - Anfänger-Themen 5
B Random() gleiche Zahlen ausschließen Java Basics - Anfänger-Themen 30
J Datentypen List - gleiche Einträge bei neuen Objekten Java Basics - Anfänger-Themen 31
N Threads: 4 Threads, 4mal Zugriff auf Array soll nicht der gleiche Zugriff sein Java Basics - Anfänger-Themen 4
S OOP Warum gleiche Instanz der Klasse? (Factory-Muster) Java Basics - Anfänger-Themen 13
F Gleiche JUnit-Tests automatisert mit verschiedenen Methoden ausführen Java Basics - Anfänger-Themen 6
O Zweidemensionales Array auf zwei gleiche Zahlen prüfen Java Basics - Anfänger-Themen 15
D Methode in einer anderen Methode (gleiche Klassse) aufrufen Java Basics - Anfänger-Themen 11
G Der Gleiche oder der Selbe? Java Basics - Anfänger-Themen 6
Gama 2 (fast) gleiche Dateien - nur eine funktioniert Java Basics - Anfänger-Themen 2
B Gleiche Ordner löschen Java Basics - Anfänger-Themen 15
V Vector/Arraylist hat nur gleiche Einträge Java Basics - Anfänger-Themen 3
G Warum das Prog mehrmals das gleiche macht wegen ItemListener Java Basics - Anfänger-Themen 4
Z Feld prüfen ob 3 gleiche zahlen nach einander vorkommen Java Basics - Anfänger-Themen 3
E Gleiche Methode einer (Kinds?)Klasse erneut aufrufen Java Basics - Anfänger-Themen 2
G gleiche Strings ungleich? Java Basics - Anfänger-Themen 5
G Gleiche Aktionen verarbeiten (aber nur einmal Code)? Java Basics - Anfänger-Themen 2
M bewirken diese Schreibweisen das gleiche? :) Java Basics - Anfänger-Themen 8
F zugriff auf gleiche klasse aus mehreren klassen. Java Basics - Anfänger-Themen 3
G 2 gleiche Strings Java Basics - Anfänger-Themen 2
Z Vector führt mehrer, aber gleiche Elemente Java Basics - Anfänger-Themen 6
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
F 2x 16bit Werte zu einem 32bit und dann splitten mit 0xb Java Basics - Anfänger-Themen 1
ptcho Werte/Position nach dem Funktionsaufruf tauschen? Java Basics - Anfänger-Themen 1
K Warum sind Werte in den Feldern ? Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
TeacherMrSSimon Schachspiel, Werte in Figur eintragen klappt nicht Java Basics - Anfänger-Themen 23
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
T ungeordnete Werte-Paare in einer Liste Java Basics - Anfänger-Themen 7
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
docmas 2DArray Werte werden nur untereinander ausgegeben Java Basics - Anfänger-Themen 1
M Nur int-Werte erlauben Java Basics - Anfänger-Themen 11
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
M Wie kann eine Methode eine andere Methode um Werte wie z.B. 1 erhöhen? Java Basics - Anfänger-Themen 6
Igig1 Wie lasse ich dir Werte in einem Array zusammenrücken? Java Basics - Anfänger-Themen 4
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
J Methoden Positive Werte zählen Java Basics - Anfänger-Themen 3
E Meine JCombobox werte an ohne selectiert zu haben Java Basics - Anfänger-Themen 6
H OOP Werte mit Set verändern Java Basics - Anfänger-Themen 6
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
H Welche Werte bei Objekterzeugung eingeben? Java Basics - Anfänger-Themen 2
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
sashady ursprüngliche Array-Werte bei erneutem Aufruf? Java Basics - Anfänger-Themen 7
cmn489 Werte beim Funktionsaufruf in ein Feld übertragen(falls dieses leer ist) Java Basics - Anfänger-Themen 1
E In Array Werte einfügen? Java Basics - Anfänger-Themen 5
HighLife Bestimmte Werte aus Array zählen Java Basics - Anfänger-Themen 15
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
J Zufallszahlen generieren und Werte vergleichen Java Basics - Anfänger-Themen 3
M Wie kann ich Werte die in einer While Schleife sind weiter genutzt werden? Java Basics - Anfänger-Themen 7
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14
R Werte und Reihenfolge in 2d Arrays vergleichen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben