# Sportliga programmieren



## Hey (17. Nov 2012)

Hey Leute 

ich habe mich hier gerade angemeldet, weil ich bei einer Hausaufgabe in Informatik einfach nicht weiterkomme... Ich sitze jetzt wirklich schon stundenlang dran, mir fehlt aber einfach der Ansatz. Natürlich habe ich die Forumregeln gelesen und weiß, dass ihr keine Hausaufgaben übernehmt, das erwarte ich aber auch gar nicht! 

Erstmal zur Aufgabe:
-jede Mannschaft soll ein Objekt sein (die entsprechenden Objekte habe ich bereits programmiert, mir fehlt aber noch die Verwaltung und die geschickte Speicherung in einem Array)
-es soll Attribute für Punkte, Tordifferenz etc. geben
-Verwaltung der Begegnungen (extra Klasse oder als Methode von der Klasse "Liga" / Auswirkungen auf Tabelle)
-Tabelle anzeigen lassen
Also zusammengefasst eine Liga mit Teams und Begegnungen, deren Tabelle angezeigt wird.

Hier erst mal ein paar erste Ansätze, wobei ich mir überhaupt nicht sicher bin, ob dieser Ansatz überhaupt sinnvoll ist.


```
public class Mannschaft {
  
  int Punkte, Tore, Gegentore, Tordifferenz, Siege, Unentschieden, Niederlagen, Spiele;
  String Name;
  Mannschaft (String nam, int p, int t, int gt, int diff, int s, int u, int n, int sp) {;
    Name = nam;
    Punkte = p;
    Tore = t;
    Gegentore = gt;
    diff = t - gt;
    Tordifferenz = diff;
    Siege = s;
    Unentschieden = u;
    Niederlagen = n;
    Spiele = sp;
  }
  
  
  public static void sortiere(int[] x) {
    boolean unsortiert=true;
    int temp;
    
    while (unsortiert){
      unsortiert = false;
      for (int i=0; i < x.length-1; i++)
      if (x[i] > x[i+1]) {
        temp       = x[i];
        x[i]       = x[i+1];
        x[i+1]     = temp;
        unsortiert = true;
      }
    }
  }
  
  public static void main(String[] args) {
    Mannschaft fcbayernmuenchen = new Mannschaft("FC Bayern",9,3,3,3,3,3,3,3);
    
    
    Mannschaft borussiadortmund = new Mannschaft("Dortmund",4,1,1,1,1,1,1,1);
    //Mannschaft hamburgersv = new Mannschaft();
    Mannschaft eintrachtfrankfurt = new Mannschaft("Frankfurt",6,2,2,2,2,2,2,2);
    /*Mannschaft fcnuernberg = new Mannschaft();
    Mannschaft schalke = new Mannschaft();
    Mannschaft hannover = new Mannschaft();
    Mannschaft werderbremen = new Mannschaft();
    Mannschaft mönchengladbach = new Mannschaft();
    Mannschaft bayerleverkusen = new Mannschaft();
    Mannschaft fcaugsburg = new Mannschaft();
    Mannschaft vfbstuttgart = new Mannschaft();
    Mannschaft fsvmainz = new Mannschaft();
    Mannschaft scfreiburg = new Mannschaft();
    Mannschaft hoffenheim = new Mannschaft();
    Mannschaft fortunaduesseldorf = new Mannschaft();
    Mannschaft vflwolfsburg = new Mannschaft();
    Mannschaft greutherfuerth = new Mannschaft();           */
    
    
    int[] Tabelle = new int[3];
    Tabelle [0] = fcbayernmuenchen.Punkte;
    Tabelle [1] = borussiadortmund.Punkte;
    Tabelle [2] = eintrachtfrankfurt.Punkte;
    
    
    String[] Mannname = new String[3];
    Mannname [0] = fcbayernmuenchen.Name;
    Mannname [1] = borussiadortmund.Name;
    Mannname [2] = eintrachtfrankfurt.Name;
    
    sortiere(Tabelle);
    for (int i=0; i<Tabelle.length; i++)
    System.out.print(Mannname[i] + Tabelle[i]+"\n");
    
    
    System.out.println("Name \t\tPunkte \t\tTordifferenz");
    System.out.println("----------------------------------------------------");
    System.out.println(fcbayernmuenchen.Name + "\t\t" + fcbayernmuenchen.Punkte + "\t\t" + fcbayernmuenchen.Tordifferenz );
    System.out.println(borussiadortmund.Name + "\t\t" + Tabelle[1] + "\t\t" + borussiadortmund.Tordifferenz );
    System.out.println(eintrachtfrankfurt.Name + "\t\t" + Tabelle[2] + "\t\t" + eintrachtfrankfurt.Tordifferenz );
    
    
  }
  
  
  
}
```
Die "Tabelle" wird noch falsch herum ausgegeben und ich muss mir noch überlegen, wie ich den Mannschaftsnamen mit hinein packe. Dafür wäre es ja am einfachsten ihn mit in ein mehrdimensionales Array zu packen, aber das geht ja nicht.. 

Schonmal Vielen Dank für alle Antworten!


----------



## Volvagia (17. Nov 2012)

Mannschaft ersetzt ja bereits als Datenkapselung ein Array. Du brauchst nur eine Kapselung für Mannschaften.


```
Mannschaft fcbayernmuenchen = new Mannschaft("FC Bayern",9,3,3,3,3,3,3,3);
Mannschaft borussiadortmund = new Mannschaft("Dortmund",4,1,1,1,1,1,1,1);
Mannschaft eintrachtfrankfurt = new Mannschaft("Frankfurt",6,2,2,2,2,2,2,2);

Mannschaft[] array = new Mannschaft[3];
array[0] = fcbayernmuenchen;
array[1] = borussiadortmund;
array[2] = eintrachtfrankfurt;

sortiere(array);

for (Mannschaft mannschaft:array)
    System.out.print(mannschaft.name + " - " + mannschaft.Punkte + "\n");
    System.out.println("----------------------------------------------------");    
    //TODO usw
}
```

(Frei aus dem Bauch raus)


----------



## Hey (17. Nov 2012)

Erstmal danke!

Aber ich verstehe das noch nicht so ganz..
Die Definition von einem Array lautet doch
"Typ"[]"Name"=new "Typ"
Und für den Datentyp muss doch Int oder String, etc. eingesetzt werden.. Wieso hast du da Mannschaft eingesetzt und was genau weise array[0] denn zu? Alle Daten, also Name Tordifferenz, Punkte, etc?   


```
for (Mannschaft mannschaft:array)
```

Diese Zeile versteh ich auch noch nicht, wie lange läuft die Schleife durch?


----------



## Volvagia (17. Nov 2012)

Hey hat gesagt.:


> Die Definition von einem Array lautet doch
> "Typ"[]"Name"=new "Typ"
> Und für den Datentyp muss doch Int oder String, etc. eingesetzt werden.. Wieso hast du da Mannschaft eingesetzt und was genau weise array[0] denn zu? Alle Daten, also Name Tordifferenz, Punkte, etc?



Mannschaft ist ein Container für die Variablen. String ist ja auch nur ein Container für ein char-Array und 3 Ints.
array[0] = ...; kopiert die Mannschafts-Variable in das Feld des Arrays.



Hey hat gesagt.:


> ```
> for (Mannschaft mannschaft:array)
> ```
> wie lange läuft die Schleife durch?



So lange, bis alle Mannschaften ein mal gelesen wurden, also Array#length mal.


----------



## Hey (17. Nov 2012)

Okay, das versteh ich! 
Dein Code ist jetzt meine komplette Main-Methode.. 

Jetzt habe ich aber folgende Fehlermeldungen..


```
System.out.print(Mannschaft.name + " - " + Mannschaft.Punkte + "\n");
```
"Mannschaft.java:100:60: error: non-static variable Punkte cannot be referenced from a static context"


```
sortiere(array);
```
"Mannschaft.java:90:5: error: method sortiere in class Mannschaft cannot be applied to given types;"


----------



## Hey (17. Nov 2012)

..


----------



## Volvagia (17. Nov 2012)

Das kommt wohl daher, dass du nicht durchgehend Groß- und Kleinschreibung verwendest. Du musst die Variablen von einer Instanz von Mannschaft lesen, nicht aus der Klasse.

sortiere musst du natürlich umschreiben, dass es Mannschaft-Arrays annimmt.

Und sry, ich habe nach dem for die öffnende Klammer übertippt.


----------



## bwbg (18. Nov 2012)

Der erste Gedanke, der mir kam, als ich den Konstruktor von Mannschaft gesehen habe, war: "Uhm, zu kompliziert, das muss übersichtlicher, eleganter gehen ...".

Durch Deine Aufgabenstellung ist ja bereits einiges vorgegeben bzw. einige Hinweise gegeben (Stichwort: Mannschaften, Begegnungen und die Liga). _Allerdings verzichte ich entgegen der Aufgabenstellung auf die weiteren Attribute (siehe unten)._

Was hat eine Mannschaft _im engeren Sinne_ mit Punkten, Tordifferenzen und der gleichen zu tun? Antwort: Nichts. Diese ergeben sich erst aus den Begegnungen (Spielen) innerhalb der Liga. Das einzige Attribut, welches zu einer Mannschaft gehören sollte, ist ihr Name. Die restlichen Werte werden mittels spezialisierten Klassen gespeichert bzw. berechnet.

Auch zur eigenen Übung habe ich die Aufgabe ausprogrammiert. Insgesamt sind vier Klassen beteiligt (
	
	
	
	





```
Main
```
, 
	
	
	
	





```
Team
```
, 
	
	
	
	





```
EncounterResult
```
 und 
	
	
	
	





```
League
```
). Da es eine Hausaufgabe ist, werde ich lediglich die Verwendung durch die Klasse 
	
	
	
	





```
Main
```
 vorgeben.

Diese kann Dir ein kleiner Hinweis oder Richtschnur sein, wie man ein solches Programm strukturieren *könnte*.

Main.java
	
	
	
	





```
import java.util.List;

public class Main {

	public static void main(String[] args) {
		League bundesliga = new League();
		
		Team f95 = new Team("Fortuna Düsseldorf");
		Team fck = new Team("1. FC Köln");
		Team bvb = new Team("Borussia Dortmund");
		
		bundesliga.addTeam(f95);
		bundesliga.addTeam(fck);
		bundesliga.addTeam(bvb);
		
		bundesliga.addEncounterResult(new EncounterResult(f95, fck, 0, 0));
		bundesliga.addEncounterResult(new EncounterResult(bvb, f95, 3, 2));
		bundesliga.addEncounterResult(new EncounterResult(fck, bvb, 0, 4));
		
		List<Team> ranking = bundesliga.getTeamRanking();
		for(Team e : ranking) {
			printTeam(bundesliga, e);
		}
	}
	
	public static void printTeam(final League league, final Team team) {
		int pointsByTeam = league.getTotalPointsByTeam(team);
		int goalDiffByTeam = league.getTotalGoalDiffByTeam(team);
		System.out.println(
				"[ " + team.getName() + " ]" +
				" Punkte: " +
				Integer.toString(pointsByTeam) + " Tordifferenz: " +
				Integer.toString(goalDiffByTeam));
	}
}
```

Ausgabe: 
	
	
	
	





```
[ Borussia Dortmund ] Punkte: 6 Tordifferenz: 5
[ Fortuna Düsseldorf ] Punkte: 1 Tordifferenz: -1
[ 1. FC Köln ] Punkte: 1 Tordifferenz: -4
```

*Hinweis:* Dies ist bei weitem keine optimale Lösung und enhält möglicherweise Fehler. Auch habe ich vom Fußball nur soviel Ahnung, als dass ich weiß, dass 22 Menschen versuchen, einen hilflosen Ball zu treten.

Ich verwende in der Implementierung an keiner Stelle "nackte" Arrays, sondern verwende Collections aus java.util. und deren Sortierfunktionen (siehe [JAPI]java.util.List[/JAPI], [JAPI]java.util.ArrayList[/JAPI], [JAPI]java.util.Collections[/JAPI] sowie [JAPI]java.util.Comparator[/JAPI]). :rtfm:

Ich hoffe, dies bringt dich ein wenig weiter.

Grüße ... bwbg


----------



## Redencool (3. Nov 2016)

ich habe noch nicht so lange mit java zu tun und ich fände es interessant wie man noch die anderen Klassen programiert wer nett wenn sie mir helfen könnten


----------



## Major_Sauce (3. Nov 2016)

Hallo Redencool, 

nur mal so, der Thread ist vom 18. Nov 2012, mach doch lieber einen neuen auf und beschreibe uns wo du noch Probleme hast, dann können wir dir bestimmt helfen.
Ach ja, "wer nett wenn sie mir helfen", ich glaube man ist hier das "Du" gewohnt, aber das Sie ist auch in Ordnung wenn du es unbedingt willst.

Mfg Major


----------



## Xyz1 (3. Nov 2016)

Habe mir mal die mühe gemacht:

```
public class Team {

    String s;

    public Team(String s) {
        this.s = s;
    }

    String getName() {
        return s;
    }
}

public class EncounterResult {

    Team t1;
    Team t2;
    int i;
    int j;

    public EncounterResult(Team t1, Team t2, int i, int j) {
        this.t1 = t1;
        this.t2 = t2;
        this.i = i;
        this.j = j;
    }
}

public class League {

    ArrayList<Team> list = new ArrayList<>();
    ArrayList<EncounterResult> list2 = new ArrayList<>();

    void addTeam(Team t) {
        list.add(t);
    }

    void addEncounterResult(EncounterResult result) {
        list2.add(result);
    }

    List<Team> getTeamRanking() {
        return list;
    }

    /**
     * @todo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     * @param team
     * @return
     */
    int getTotalPointsByTeam(Team team) {
        int sum = 0;
        for (EncounterResult result : list2) {
            if (result.t1.s.equals(team.s)) {
                sum += result.i;
            }
            if (result.t2.s.equals(team.s)) {
                sum += result.j;
            }
        }
        return sum;
    }

    /**
     * @todo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     * @param team
     * @return
     */
    int getTotalGoalDiffByTeam(Team team) {
        int diff = 0;
        for (EncounterResult result : list2) {
            if (result.t1.s.equals(team.s)) {
                diff += result.j - result.i;
            }
            if (result.t2.s.equals(team.s)) {
                diff += result.i - result.j;
            }
        }
        return diff;
    }
}

public class Mannschaft {

    int Punkte, Tore, Gegentore, Tordifferenz, Siege, Unentschieden, Niederlagen, Spiele;
    String Name;

    Mannschaft(String nam, int p, int t, int gt, int diff, int s, int u, int n, int sp) {;
        Name = nam;
        Punkte = p;
        Tore = t;
        Gegentore = gt;
        diff = t - gt;
        Tordifferenz = diff;
        Siege = s;
        Unentschieden = u;
        Niederlagen = n;
        Spiele = sp;
    }

    public static void sortiere(int[] x) {
        boolean unsortiert = true;
        int temp;

        while (unsortiert) {
            unsortiert = false;
            for (int i = 0; i < x.length - 1; i++) {
                if (x[i] > x[i + 1]) {
                    temp = x[i];
                    x[i] = x[i + 1];
                    x[i + 1] = temp;
                    unsortiert = true;
                }
            }
        }
    }

    public static void main(String[] args) {
        Mannschaft fcbayernmuenchen = new Mannschaft("FC Bayern", 9, 3, 3, 3, 3, 3, 3, 3);

        Mannschaft borussiadortmund = new Mannschaft("Dortmund", 4, 1, 1, 1, 1, 1, 1, 1);
        //Mannschaft hamburgersv = new Mannschaft();
        Mannschaft eintrachtfrankfurt = new Mannschaft("Frankfurt", 6, 2, 2, 2, 2, 2, 2, 2);
        /*Mannschaft fcnuernberg = new Mannschaft();
    Mannschaft schalke = new Mannschaft();
    Mannschaft hannover = new Mannschaft();
    Mannschaft werderbremen = new Mannschaft();
    Mannschaft mönchengladbach = new Mannschaft();
    Mannschaft bayerleverkusen = new Mannschaft();
    Mannschaft fcaugsburg = new Mannschaft();
    Mannschaft vfbstuttgart = new Mannschaft();
    Mannschaft fsvmainz = new Mannschaft();
    Mannschaft scfreiburg = new Mannschaft();
    Mannschaft hoffenheim = new Mannschaft();
    Mannschaft fortunaduesseldorf = new Mannschaft();
    Mannschaft vflwolfsburg = new Mannschaft();
    Mannschaft greutherfuerth = new Mannschaft();           */

        int[] Tabelle = new int[3];
        Tabelle[0] = fcbayernmuenchen.Punkte;
        Tabelle[1] = borussiadortmund.Punkte;
        Tabelle[2] = eintrachtfrankfurt.Punkte;

        String[] Mannname = new String[3];
        Mannname[0] = fcbayernmuenchen.Name;
        Mannname[1] = borussiadortmund.Name;
        Mannname[2] = eintrachtfrankfurt.Name;

        sortiere(Tabelle);
        for (int i = 0; i < Tabelle.length; i++) {
            System.out.print(Mannname[i] + Tabelle[i] + "\n");
        }

        System.out.println("Name \t\tPunkte \t\tTordifferenz");
        System.out.println("----------------------------------------------------");
        System.out.println(fcbayernmuenchen.Name + "\t\t" + fcbayernmuenchen.Punkte + "\t\t" + fcbayernmuenchen.Tordifferenz);
        System.out.println(borussiadortmund.Name + "\t\t" + Tabelle[1] + "\t\t" + borussiadortmund.Tordifferenz);
        System.out.println(eintrachtfrankfurt.Name + "\t\t" + Tabelle[2] + "\t\t" + eintrachtfrankfurt.Tordifferenz);

    }
}

public class Main {

    public static void main(String[] args) {
        League bundesliga = new League();

        Team f95 = new Team("Fortuna Düsseldorf");
        Team fck = new Team("1. FC Köln");
        Team bvb = new Team("Borussia Dortmund");

        bundesliga.addTeam(f95);
        bundesliga.addTeam(fck);
        bundesliga.addTeam(bvb);

        bundesliga.addEncounterResult(new EncounterResult(f95, fck, 0, 0));
        bundesliga.addEncounterResult(new EncounterResult(bvb, f95, 3, 2));
        bundesliga.addEncounterResult(new EncounterResult(fck, bvb, 0, 4));

        List<Team> ranking = bundesliga.getTeamRanking();
        ranking.stream().forEach((e) -> {
            printTeam(bundesliga, e);
        });
    }

    public static void printTeam(final League league, final Team team) {
        int pointsByTeam = league.getTotalPointsByTeam(team);
        int goalDiffByTeam = league.getTotalGoalDiffByTeam(team);
        System.out.println(
                "[ " + team.getName() + " ]"
                + " Punkte: "
                + Integer.toString(pointsByTeam) + " Tordifferenz: "
                + Integer.toString(goalDiffByTeam));
    }
}
```

 

Erst hinterher ist mir aufgefallen, das Mannschaft mit den Klassen eigentlich nix zu tun hat...


----------



## Redencool (3. Nov 2016)

Vielen Dank


----------



## Redencool (3. Nov 2016)

Ich habe es gerade ausprobiert , aber er erkkent kein Array List.

Ich wollte eigentlich nur wissen wie man so ein Liga system programiert.
Vielen dank es hat mir sehr weiter geholfen 
LG


----------



## Redencool (3. Nov 2016)

erkennt*


----------



## Xyz1 (3. Nov 2016)

Redencool hat gesagt.:


> Ich habe es gerade ausprobiert , aber er erkkent kein Array List.


Ja, da war ich etwas faul beim Kopieren der Imports...

```
import java.util.ArrayList;
import java.util.List;

import java.util.List;
```

Suche die passenden aus.


----------



## Clashgamer04 (18. Jul 2018)

ich habe mir mal die mühe gemacht so etwas zu coden:

Die Main Klasse:


```
package pack1;

import java.util.List;

public class Main {

    public static void main(String[] args) {
        League bundesliga = new League();

        Team FCB = new Team("FCB");
        Team BVB = new Team("BVB");
        Team S04 = new Team("S04");

        bundesliga.addTeam(FCB);
        bundesliga.addTeam(BVB);
        bundesliga.addTeam(S04);

        bundesliga.addEncounterResult(new EncounterResult(FCB, BVB, 0, 1));
        bundesliga.addEncounterResult(new EncounterResult(BVB, S04, 3, 2));
        bundesliga.addEncounterResult(new EncounterResult(S04, FCB, 0, 4));

        bundesliga.addEncounterResult(new EncounterResult(BVB, FCB, 1, 1));
        bundesliga.addEncounterResult(new EncounterResult(S04, BVB, 0, 2));
        bundesliga.addEncounterResult(new EncounterResult(FCB, S04, 1, 0));

        List<Team> ranking = bundesliga.getTeamRanking();
        ranking.stream().forEach((e) -> {
            printTeam(bundesliga, e);
        });
    }

    public static void printTeam(final League league, final Team team) {
        int pointsByTeam = league.getTotalPointsByTeam(team);
        int goalDiffByTeam = league.getTotalGoalDiffByTeam(team);
        int gamesByTeam = league.getTotalGamesByTeam(team);
        int goalsByTeam = league.getTotalGoalsByTeam(team);

        System.out.println("[ "
                + team.getName() + " ]" + " Pkt: "
               
                + Integer.toString(pointsByTeam) + "\t" + "\t"+ " Diff: "
                + Integer.toString(goalDiffByTeam) + "\t" + " Tore: "
                + Integer.toString(goalsByTeam) +  "\t"  + "Sp: "
                + Integer.toString(gamesByTeam));
    }
}
```


----------



## Clashgamer04 (18. Jul 2018)

Die League Klasse:

```
package pack1;

import java.util.ArrayList;
import java.util.List;


public class League {

    ArrayList<Team> list = new ArrayList<>();
    ArrayList<EncounterResult> list2 = new ArrayList<>();

    void addTeam(Team t) {
        list.add(t);
    }

    void addEncounterResult(EncounterResult result) {
        list2.add(result);
    }

    List<Team> getTeamRanking() {
        return list;
    }

///////////////////////////////////////////////////////////////////
    int getTotalPointsByTeam(Team team) {
        int sum = 0;
        for (EncounterResult result : list2) {
            if (result.t1.s.equals(team.s)) {
                if (result.i > result.j) {
                    sum += 3;
                }
                if (result.i < result.j) {
                    sum += 0;
                }
                if (result.i == result.j) {
                    sum += 1;
                }
            }
            if (result.t2.s.equals(team.s)) {
                if (result.j > result.i) {
                    sum += 3;
                }
                if (result.j < result.i) {
                    sum += 0;
                }
                if (result.j == result.i) {
                    sum += 1;
                }
            }
        }
        return sum;
    }

////////////////////////////////////////////////////
    int getTotalGoalDiffByTeam(Team team) {
        int diff = 0;
        for (EncounterResult result : list2) {
            if (result.t1.s.equals(team.s)) {
                diff += result.i - result.j;
            }
            if (result.t2.s.equals(team.s)) {
                diff += result.j - result.i;
            }
        }
        return diff;
    }
///////////////////////////////////////////////////

    int getTotalGamesByTeam(Team team) {
        int spiele = 0;
        for(EncounterResult games : list2) {
            if(games.t1.s.equals(team.s)) {
                spiele++;
            }
            if(games.t2.s.equals(team.s)) {
                spiele++;
            }
        }

        return spiele;
    }
  
    int getTotalGoalsByTeam(Team team) {
        int tore = 0;
        for(EncounterResult result : list2) {
            if(result.t1.s.equals(team.s)) {
                tore+=result.i;
            }
            if(result.t2.s.equals(team.s)) {
                tore+=result.j;
            }
        }
        return tore;
    }
}
```


----------



## Clashgamer04 (18. Jul 2018)

Die Team Klasse:

```
package pack1;

public class Team {

    String s;

    public Team(String s) {
        this.s = s;
    }

    String getName() {
        return s;
    }
}
```

und die EncounterResult klasse:

```
package pack1;

public class EncounterResult {

    Team t1;
    Team t2;
    int i;
    int j;

    public EncounterResult(Team t1, Team t2, int i, int j) {
        this.t1 = t1;
        this.t2 = t2;
        this.i = i;
        this.j = j;
    }
}
```


----------



## Clashgamer04 (18. Jul 2018)

Als Ausgabe erhalte ich das:

```
[ FCB ] Pkt: 7         Diff: 4     Tore: 6    Sp: 4
[ BVB ] Pkt: 10         Diff: 4     Tore: 7    Sp: 4
[ S04 ] Pkt: 0         Diff: -8     Tore: 2    Sp: 4
```


----------



## mihe7 (18. Jul 2018)

Ich weiß zwar nicht, worum es geht, aber ob das dem TE nach knapp sechs Jahren noch hilft?


----------



## Xyz1 (18. Jul 2018)

@mihe7 Die Leiche ausgebuddelt hatte @Redencool .
@Clashgamer04 hat dann weitere Leichenschändung betrieben.

Nach 2 Jahren weiß ich auch nicht mehr um was es ging. 1 Jahr wäre ok gewesen aber 2 Jahre Rückerinnerungsvermögen abverlangt.... nicht leicht.

Ich weiß auch nicht mehr warum ich das aufgegriffen hatte und sogar ein KD erstellte.

Aber das als Anfang wäre besser:

 
@mihe7 Ich glaub geht um Fußball.


----------



## mihe7 (18. Jul 2018)

DerWissende hat gesagt.:


> @Clashgamer04 hat dann weitere Leichenschändung betrieben.



ROFL.


----------



## Clashgamer04 (18. Jul 2018)

aber eine frage an dich: wie kann man die Teams sortieren, weil das da:

```
List<Team> getTeamRanking() {
        return list;
    }
```
sortiert halt nichts


----------



## mihe7 (18. Jul 2018)

https://docs.oracle.com/javase/8/do...tml#sort-java.util.List-java.util.Comparator-


----------



## Xyz1 (18. Jul 2018)

Clashgamer04 hat gesagt.:


> aber eine frage an dich: wie kann man die Teams sortieren, weil das da:


ich vage mich zu erinnern, dass ich den part mit der Sortierung bewusst ausgelassen habe (vor 2 Jahren), damit er/sie auch noch etwas zu tun hat....

Aber die Frage wäre was soll wonach sortiert werden?


----------



## Clashgamer04 (18. Jul 2018)

es soll nach punkten sortiert werden (wenn die gleich sind dann nach der Differenz und danach nach den geschossenden toren


----------



## Clashgamer04 (18. Jul 2018)

also sprich:

```
[FCB] Pkt:10 Diff: 4 Tore:5
[BVB] Pkt:8 Diff: 3 Tore:6
[S04] Pkt:8 Diff:1 Tore:5
```


----------



## mihe7 (18. Jul 2018)

Clashgamer04 hat gesagt.:


> es soll nach punkten sortiert werden (wenn die gleich sind dann nach der Differenz und danach nach den geschossenden toren



Du implementierst halt einen entsprechenden Comparator und verwendest den, um die Liste zu sortieren. Also etwas wie:


```
void sort() {
    Collections.sort(list, new Comparator<Team>() {
        @Override public int compare(Team t1, Team t2) {
            int result = getTotalPointsByTeam(t1) - getTotalPointsByTeam(t2);
            if (result == 0) {
                result = getTotalGoalDiffByTeam(t1) - getTotalGoalDiffByTeam(t2);
            }
            if (result == 0) {
                result = getTotalGoalsByTeam(t1) - getTotalGoalsByTeam(t2);
            }
            return result;
        }
    });
}
```


----------



## Xyz1 (19. Jul 2018)

mihe7 hat gesagt.:


> Also etwas wie


Ja so in etwa


----------



## Clashgamer04 (19. Jul 2018)

und wie sähe das für acht Teams aus (die heißen "Team" + Anzahl (int Anzahl=0 Anzahl++ xD)
Halt so:
Team1
Team2
Team3
Team4
Team5
Team6
Team7
Team8


----------



## Clashgamer04 (19. Jul 2018)

aber wie würde sich dann folgenes verändern?

```
List<Team> ranking = bundesliga.getTeamRanking();
        System.out.println(" ");
        ranking.stream().forEach((e) -> {
            printTeam(bundesliga, e);
        });
```


----------



## Xyz1 (19. Jul 2018)

Clashgamer04 hat gesagt.:


> aber wie würde sich dann folgenes verändern?


Ich versteh die Frage nicht ganz....
Erstmal muss das Klassendiagramm noch ergänzt werden. 
Fußballlust habe ich nach der WM keine mehr....


----------



## Clashgamer04 (19. Jul 2018)

ja wie müsste das dann aussehen (also die ausgabe der Teams in der Reihenfolge)


----------



## Xyz1 (19. Jul 2018)

Den Code vor 2 Jahren habe ich weggeschmissen....
Könntest du mir das nochmal von Scratch geben?


----------



## Xyz1 (19. Jul 2018)

So vielleicht


----------



## mihe7 (19. Jul 2018)

Clashgamer04 hat gesagt.:


> ja wie müsste das dann aussehen (also die ausgabe der Teams in der Reihenfolge)


Ich weiß nicht, was Du meinst. In getTeamRanking sortierst Du halt. Der Code für die Ausgabe ändert sich dann nicht.

Natürlich kannst Du Dir auch eine irgendwie sortierte Team-Liste zurückgeben lassen und dann mit dem Comparator (nennen wir ihn mal cmp) nur die Ausgabe sortieren, also etwa:


```
bundesliga.getTeams().stream().sorted(cmp).forEach(...)
```


----------



## Clashgamer04 (6. Aug 2018)

ok andere sache
ich habe tic tac toe programmiert mit 6 teams und möchte die teams am ende nach punkten sortiert haben

bisher sieht das so aus:

```
g.setFont(new Font("Arial", Font.BOLD, 30));
//Teamnamen           
 g.drawString(Names.Spieler1, 100, 100);
            g.drawString(Names.Spieler2, 100, 150);
            g.drawString(Names.Spieler3, 100, 200);
            g.drawString(Names.Spieler4, 100, 250);
            g.drawString(Names.Spieler5, 100, 300);
            g.drawString(Names.Spieler6, 100, 350);
//Spiele
            g.drawString("Sp.", 390, 60);
            g.drawString("" + Gui.Spieler1Spiele, 400, 100);
            g.drawString("" + Gui.Spieler2Spiele, 400, 150);
            g.drawString("" + Gui.Spieler3Spiele, 400, 200);
            g.drawString("" + Gui.Spieler4Spiele, 400, 250);
            g.drawString("" + Gui.Spieler5Spiele, 400, 300);
            g.drawString("" + Gui.Spieler6Spiele, 400, 350);
//Punkte
            g.drawString("Pkt.", 440, 60);
            g.drawString("" + Gui.Spieler1Punkte, 450, 100);
            g.drawString("" + Gui.Spieler2Punkte, 450, 150);
            g.drawString("" + Gui.Spieler3Punkte, 450, 200);
            g.drawString("" + Gui.Spieler4Punkte, 450, 250);
            g.drawString("" + Gui.Spieler5Punkte, 450, 300);
            g.drawString("" + Gui.Spieler6Punkte, 450, 350);
```

Auch wenn das halt nur die teams in reihenfolge auflistet

Ein Bild vom Ergebniss einer saison:


----------



## mihe7 (6. Aug 2018)

Clashgamer04 hat gesagt.:


> bisher sieht das so aus:


Das solltest Du ändern. Bau Dir mal eine Klasse, in der Du neben dem Spieler auch die Spiele und die Punkte angeben kannst. Dann steck die Objekte dieser Klasse in z. B. eine Liste (oder ein Array) und dann sortierst Du diese und gibst es entsprechend aus.


----------

